Trong số các hệ điều hành phổ biến, chúng đều được chuẩn hóa về việc sử dụng đầu vào tiêu chuẩn, đầu ra tiêu chuẩn và lỗi tiêu chuẩn với các bộ mô tả tệp lần lượt là 0, 1 và 2. Điều này cho phép bạn chuyển các đầu vào và đầu ra đến các vị trí khác nhau. Hãy xem cách sử dụng đầu vào, đầu ra và lỗi tiêu chuẩn trong Python
Để tìm hiểu thêm về đường ống, chuyển hướng, stdin, stdout và stderr nói chung, hãy xem hướng dẫn của tôi STDIN, STDOUT, STDERR, Piping và Redirecting
sử dụng cơ bản
Trong Python,
python myapp.py > output.txt
2, python myapp.py > output.txt
3 và python myapp.py > output.txt
4 là các đối tượng giống như tệp có thể thực hiện các hoạt động dự kiến như python myapp.py > output.txt
5 và python myapp.py > output.txt
6. Hãy xem cách sử dụng các đối tượng này. Tham khảo tài liệu gói sys chính thức để biết thông tin đầy đủđầu ra tiêu chuẩn
đầu ra tiêu chuẩn
python myapp.py > output.txt
7 về cơ bản là một phím tắt cho python myapp.py > output.txt
8import sys
# Standard output - sys.stdout
print[type[sys.stdout]]
sys.stdout.write['Hello\n']
python myapp.py > output.txt
3 là một đối tượng # Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
0 nên bạn có thể đọc và ghi vào chúng như một tệp thông thường. Xem để biết thêm chi tiết về lớp # Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
0Để chuyển đầu ra của chương trình Python của bạn sang một tệp, bạn có thể thực hiện nó từ trình bao như thế này
python myapp.py > output.txt
lỗi tiêu chuẩn
Lỗi tiêu chuẩn hoạt động giống như đầu ra tiêu chuẩn và có thể được sử dụng theo cùng một cách. Lỗi tiêu chuẩn có bộ mô tả tệp
# Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
2 trong đó đầu ra tiêu chuẩn có bộ mô tả tệp # Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
3. Điều này có lợi nếu bạn muốn tách các thông báo lỗi và cảnh báo khỏi đầu ra thực tế của ứng dụng của mình. Ví dụ: nếu chương trình của bạn xuất ra một tệp XML, bạn không muốn các chuỗi lỗi được chèn vào giữa tệp XML của mình# Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
Để chuyển lỗi tiêu chuẩn từ trình bao sang tệp trong khi để đầu ra tiêu chuẩn chuyển đến thiết bị đầu cuối
python myapp.py > output.txt
5Để đưa lỗi tiêu chuẩn vào đầu ra tiêu chuẩn, bạn có thể làm
python myapp.py > output.txt
6đầu vào tiêu chuẩn
Đầu vào tiêu chuẩn mặc định cho bàn phím của bạn trong thiết bị đầu cuối, nhưng bạn cũng có thể chuyển các tệp hoặc đầu ra từ chương trình trước sang đầu vào tiêu chuẩn của mình. Đây là một ví dụ cơ bản về việc đọc một byte từ đầu vào tiêu chuẩn
python myapp.py > output.txt
7Nếu bạn muốn đầu vào tương tác từ người dùng, tốt hơn nên sử dụng
# Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
4 thay vì # Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
5 khi yêu cầu đầu vào của người dùng, nhưng # Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
6 có thể hữu ích để đọc tệp được dẫn từ trình bao như thế nàypython myapp.py > output.txt
1Để chuyển đầu ra tiêu chuẩn của một chương trình sang đầu vào tiêu chuẩn của chương trình Python của bạn, bạn có thể làm như thế này
python myapp.py > output.txt
2thuộc tính của Dunder. hệ thống. __stdin__, hệ thống. __stdout__, hệ thống. __stderr__
Các thuộc tính dunder
# Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
7, # Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
8 và # Standard error - sys.stderr
print[type[sys.stderr]]
sys.stderr.write["Error messages can go here\n"]
9 luôn chứa các tham chiếu đến các luồng ban đầu. Nếu bạn gán lại python myapp.py > output.txt
3 để trỏ đến một nơi khác như đối tượng StringIO, bạn luôn có thể gán nó trở lại giá trị ban đầu bằng cách sauThay đổi
python myapp.py > output.txt
3 thành đối tượng python myapp.py > output.txt
52 có thể hữu ích đặc biệt khi kiểm tra đơn vị. Hãy xem hướng dẫn của tôi Python Sử dụng StringIO để chụp STDOUT và STDERRpython myapp.py > output.txt
9tập tin đầu vào. phím tắt đầu vào []
Hàm này sẽ trả về đầu vào tiêu chuẩn được phân tách theo dòng hoặc nếu tên tệp được cung cấp dưới dạng đối số dòng lệnh, thì hàm này sẽ cung cấp tất cả các dòng từ các tệp được cung cấp. Nó tương tự như
python myapp.py > output.txt
53 trong Ruby. Điều này cung cấp cho bạn tùy chọn chuyển một tệp từ trình bao hoặc để cung cấp danh sách các đường dẫn tệp cho đầu vàoVí dụ: bạn có thể nhập tệp qua đầu vào tiêu chuẩn hoặc cung cấp danh sách tên tệp làm đối số cho ứng dụng
python myapp.py > output.txt
1Đây là một ví dụ về nó trong một kịch bản
python myapp.py > output.txt
0Đây là cách bạn có thể chạy chương trình để chuyển các tệp hoặc cung cấp tên tệp
python myapp.py > output.txt
1Phần kết luận
Sau khi đọc hướng dẫn này, bạn sẽ biết cách truy cập và đọc/ghi từ đầu vào tiêu chuẩn, đầu ra tiêu chuẩn và lỗi tiêu chuẩn trong Python. Bạn cũng nên biết cách sử dụng đối tượng
python myapp.py > output.txt
52 để lấy đầu ra và sử dụng hàm python myapp.py > output.txt
55 để lấy dữ liệu