Chúng là hai cách hiển thị thông điệp khác nhau.
print
thường đi tới sys.stdout
và bạn biết nơi sys.stderr
đang diễn ra. Cần biết sự khác biệt giữa stdin, stdout, and stderr.
stdout
nên được sử dụng cho đầu ra chương trình bình thường, trong khi stderr
chỉ được dành riêng cho thông báo lỗi (thực thi chương trình bất thường). Có các tiện ích để tách các luồng này, cho phép người dùng mã của bạn phân biệt giữa đầu ra và lỗi bình thường.
print
có thể in trên bất kỳ đối tượng tập tin giống như, bao gồm sys.stderr
:
print >> sys.stderr, 'My error message'
Những lợi thế của việc sử dụng sys.stderr
lỗi thay vì sys.stdout là:
- Nếu người dùng chuyển hướng
stdout
để một tệp, họ vẫn thấy lỗi trên màn hình.
- Không bị chặn, vì vậy nếu
sys.stderr
được chuyển hướng đến tệp nhật ký, sẽ ít có khả năng chương trình bị lỗi trước khi lỗi được ghi lại.
Nó đáng chú ý là có một cách thứ ba, bạn có thể cung cấp một thông điệp kết thúc:
sys.exit('My error message')
này sẽ gửi một thông điệp tới stderr
và thoát.
Cảm ơn bạn đã trả lời. – user225312