Ví dụ sau ghi vào một tệp nếu tập lệnh được bắt đầu bằng một đối số [
$ python stdout_or_file.py $ python stdout_or_file.py out.txt2]] hoặc vào thiết bị xuất chuẩn nếu không thì
import sys if len[sys.argv] > 1: print["Writing to file " + sys.argv[1]] f_ = open[sys.argv[1], 'w'] else: f_ = sys.stdout f_.write['Line one\n'] f_.write['Line two\n'] f_.write['Line three'] if len[sys.argv] > 1: f_.close[]
Tập lệnh nên được gọi bằng một trong hai biến thể
$ python stdout_or_file.py $ python stdout_or_file.py out.txt
Để in Python thành
$ python stdout_or_file.py $ python stdout_or_file.py out.txt3 , chúng ta cần trỏ hàm
$ python stdout_or_file.py $ python stdout_or_file.py out.txt4 vào tệp
$ python stdout_or_file.py $ python stdout_or_file.py out.txt5. Nó được thực hiện hơi khác trong Python 3 so với Python 2
Trăn 3
import sys
print['Hello world', file=sys.stderr]
Trong Python3,
$ python stdout_or_file.py $ python stdout_or_file.py out.txt4 là một hàm và lấy tệp đầu ra làm đối số. Chúng tôi có thể sử dụng nó để in ra bất kỳ tệp nào và trong trường hợp này là
$ python stdout_or_file.py $ python stdout_or_file.py out.txt5
Trăn 2
Trong Python 2, chúng ta có thể sử dụng cú pháp
$ python stdout_or_file.py $ python stdout_or_file.py out.txt8, cú pháp này không được dùng trong Python 3, vì trong Python 3,
$ python stdout_or_file.py $ python stdout_or_file.py out.txt4 là một hàm thay vì một câu lệnh
import sys
print >> sys.stderr, 'Hello world'
Các phương pháp khác
Tất nhiên, vì
$ python stdout_or_file.py $ python stdout_or_file.py out.txt5 là một đối tượng tệp trong cả Python 2 và Python 3, nên chúng ta có thể sử dụng phương thức
import sys
print >> sys.stderr, 'Hello world'
1import sys
sys.stderr.write['Hello world']
Chỉ cần lưu ý rằng
import sys
print >> sys.stderr, 'Hello world'
2 không tự động thêm một dòng mới vào cuối mỗi lệnh gọi ghi như $ python stdout_or_file.py $ python stdout_or_file.py out.txt4, vì vậy bạn có thể muốn thêm một
import sys
print >> sys.stderr, 'Hello world'
4 vào đầu ra của mình một cách rõ rànggọi def[self, cmd, **kwargs]. print['Đang chạy "{}"'. định dạng [cmd], tệp = sys. stderr] mong đợi = kwargs. pop["mong đợi", [dict[return_codes=[os. EX_OK], stdout=None, stderr=None]]] process = sub process. Giáo hoàng [cmd, stdin = kwargs. get["stdin", quy trình con. PIPE], thiết bị xuất chuẩn = quy trình con. PIPE, stderr=quy trình con. PIPE, **kwargs] ra, err = quá trình. giao tiếp[] return_code = quá trình. thăm dò [] ra = ra. giải mã [sys. tiêu chuẩn. mã hóa] err = err. giải mã [sys. tiêu chuẩn. mã hóa] khớp def [return_code, out, err, mong đợi]. exit_ok = return_code trong dự kiến["return_codes"] stdout_ok = re. tìm kiếm [dự kiến. get["stdout"] hoặc "", out] stderr_ok = lại. tìm kiếm [dự kiến. get["stderr"] hoặc "", err] return exit_ok và stdout_ok và stderr_ok nếu không có [match[return_code, out, err, exp] cho exp trong mong đợi]. in [lỗi] trong = quy trình con. CalledProcessError[return_code, cmd, output=out] e. tiêu chuẩn, e. stderr = out, err raise e return self. Sub processResult[ra, err, return_code] Trong hướng dẫn về trăn này, bạn sẽ tìm hiểu về python print – stderr, stdin và stdout kèm theo các ví dụ
Python cung cấp cho chúng ta các đối tượng giống như tệp đại diện cho stdin, stdout và stderr. Vì vậy, trước tiên chúng ta cần nhập mô-đun sys trong python. Ở đây chúng ta sẽ xem làm thế nào chúng ta có thể làm việc với các đối tượng này
Mục lục
- Python in ra stderr
- Python lấy đầu vào từ stdin
- Thiết bị xuất chuẩn Python
- Đọc từ stdin trong python
Python in ra stderr
Python stderr được gọi là luồng lỗi tiêu chuẩn. Nó tương tự như thiết bị xuất chuẩn vì nó cũng in trực tiếp ra bàn điều khiển nhưng điểm khác biệt chính là nó chỉ in các thông báo lỗi
Thí dụ
________số 8Sau khi viết đoạn mã trên [python print to stderr], bạn có thể quan sát thấy rằng nó in thông báo gỡ lỗi bằng cách sử dụng sys. tiêu chuẩn. Stderr luôn được sử dụng để in lỗi và sẽ có lợi nếu bạn muốn tách cảnh báo và thông báo lỗi khỏi đầu ra thực tế
Bạn có thể tham khảo ảnh chụp màn hình bên dưới để in python thành stderr
Python lấy đầu vào từ stdin
Python stdin được sử dụng cho đầu vào tiêu chuẩn vì nó gọi hàm đầu vào bên trong và chuỗi đầu vào được nối thêm một ký tự xuống dòng ở cuối. Vì vậy, hãy sử dụng chức năng rstrip[] để loại bỏ nó
Thí dụ
import sys
for line in sys.stdin:
if 'E' == line.rstrip[]:
break
print[f"Message : {line}']
print["End"]
Sau khi viết đoạn mã trên [trăn lấy đầu vào từ stdin], chương trình sẽ đọc thông báo của người dùng từ đầu vào tiêu chuẩn và xử lý nó cho phù hợp. Chương trình sẽ kết thúc khi người dùng nhập thông báo “E” và nó in ra “End”
Bạn có thể tham khảo ảnh chụp màn hình bên dưới để python lấy đầu vào từ stdin
Thiết bị xuất chuẩn Python
Thiết bị xuất chuẩn Python được gọi là đầu ra tiêu chuẩn. Ở đây, hàm ghi sẽ in trực tiếp bất kỳ chuỗi nào bạn sẽ cung cấp
Thí dụ
$ python stdout_or_file.py $ python stdout_or_file.py out.txt0
Sau khi viết đoạn mã trên [python stdout], đầu ra sẽ là "Chào mừng bạn đến với python". Chúng tôi nhận được đầu ra cho bàn điều khiển khi chúng tôi viết sys. tiêu chuẩn. Vì vậy, bất kỳ đầu vào nào được cung cấp, chúng ta sẽ thấy trên bảng điều khiển
Bạn có thể tham khảo ảnh chụp màn hình bên dưới cho thiết bị xuất chuẩn python
Đọc từ stdin trong python
Để đọc một đầu vào từ stdin, chúng ta có thể gọi hàm read[] và readlines[] trong Python, để đọc mọi thứ
Thí dụ
$ python stdout_or_file.py $ python stdout_or_file.py out.txt1
Sau khi viết đoạn mã trên [đọc từ stdin trong python], stdin sẽ đọc đầu vào và in đầu vào cho mỗi
Bạn có thể tham khảo ảnh chụp màn hình bên dưới để đọc từ stdin trong python
Bạn có thể thích các hướng dẫn Python sau đây
- Toán tử tăng và giảm trong Python
- Lập trình hướng đối tượng python
- Hàm tạo trong Python
- Công cụ sửa đổi truy cập Python + Ví dụ
- Hàm ẩn danh Python
- Python đọc tệp CSV và ghi tệp CSV
- Mảng Python với các ví dụ
- Python lấy tên tệp từ đường dẫn
Trong Hướng dẫn Python này, chúng ta đã học – Python print to stderr, Python lấy đầu vào từ stdin, Python stdout và Đọc từ stdin trong python với ví dụ
Bijay Kumar
Python là một trong những ngôn ngữ phổ biến nhất ở Hoa Kỳ. Tôi đã làm việc với Python trong một thời gian dài và tôi có kinh nghiệm làm việc với nhiều thư viện khác nhau trên Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, v.v… Tôi có kinh nghiệm làm việc với nhiều khách hàng khác nhau . Kiểm tra hồ sơ của tôi