Stdout được python sử dụng để hiển thị đầu ra văn bản của các lệnh mà bạn chạy trên thiết bị đầu cuối hoặc trong tập lệnh python. Stderr được gọi khi có bất kỳ lỗi nào trong khi chạy lệnh của bạn. Đây cũng là trường hợp bất cứ khi nào bạn chạy bất kỳ lệnh nào khác, không chỉ python và bất kỳ tập lệnh nào khác, chẳng hạn như tập lệnh shell, trong thiết bị đầu cuối. Vấn đề là một khi các thông báo thiết bị xuất chuẩn và thiết bị xuất chuẩn này được hiển thị, chúng không thể được truy xuất lại sau này để tham khảo trong tương lai. Các lệnh/tập lệnh tiếp theo sẽ đẩy chúng ra khỏi màn hình. Trong những trường hợp như vậy, nên chuyển hướng thiết bị xuất chuẩn & thiết bị xuất chuẩn sang tệp trong Python. Trong bài viết này, chúng ta sẽ tìm hiểu cách làm điều này khi bạn sử dụng python
Cách chuyển hướng thiết bị xuất chuẩn & thiết bị xuất chuẩn sang tệp trong Python
Trong trăn, sys. thiết bị xuất chuẩn chứa đầu ra mới nhất của thiết bị xuất chuẩn và sys. stderr chứa đầu ra stderr
Một trong những cách để chuyển hướng các đầu ra này sang tệp là đặt chúng thành một đối tượng tệp như hình bên dưới. Sử dụng phương pháp này nếu bạn muốn chuyển hướng đầu ra từ bên trong tập lệnh
import sys with open['file', 'w'] as sys.stdout: print['test']
Ngoài ra, bạn có thể chuyển hướng đầu ra sang một tệp [e. g. tùy tùng. txt] bằng cách sử dụng chuyển hướng shell
$ python3 foo.py > op.txt
Tương tự bạn cũng có thể set stderr thành file như hình bên dưới. Nếu nó không hiệu quả với bạn, vui lòng thử phương pháp tiếp theo được đề cập bên dưới
import sys with open['file', 'w'] as sys.stderr: print['test']
Nếu bạn đang sử dụng python>3. 4, bạn có thể sử dụng contextlib. redirect_stderr để chuyển hướng đầu ra stderr sang tệp. Đây là một ví dụ
from contextlib import redirect_stderr with open['filename.log', 'w'] as stderr, redirect_stderr[stderr]: print[1/0] # errors from here are logged to the file.
Trong ví dụ trên, chúng tôi đã cố tình đưa ra một ngoại lệ bằng cách chia 1 cho 0. Thông báo lỗi được ghi vào tên tệp. tệp nhật ký
Không giống như chuyển hướng thiết bị xuất chuẩn sang tệp, có một chút khó khăn khi gửi đầu ra thiết bị xuất chuẩn sang tệp do lỗi xảy ra thường làm hỏng quá trình thực thi mã. Vì vậy, nên sử dụng contextlib cho các mục đích như vậy
Trong bài viết này, chúng ta đã học cách chuyển hướng thiết bị xuất chuẩn và thiết bị xuất chuẩn sang tệp. Bạn có thể sử dụng chúng để ghi lại thông báo lỗi và đầu ra của các lệnh và tập lệnh python của bạn để tham khảo trong tương lai
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chuyển hướng đầu ra bản in thành tệp văn bản trong Python. Nhưng trước khi đi xa hơn, chúng ta hãy xem chức năng in trong Python
Cú pháp hàm in
print[objects, sep=separator, end=end, file=filename, flush=flushvalue]
Từ cú pháp trên, chúng ta có thể thấy rằng hàm
import sys with open['file', 'w'] as sys.stderr: print['test']1 có tham số tệp. Theo giá trị mặc định của tham số tệp là
import sys with open['file', 'w'] as sys.stderr: print['test']2. Vì lý do này, bất cứ khi nào chúng tôi in bất cứ thứ gì, nó sẽ in trên đầu ra tiêu chuẩn
Thí dụ
# printing in the standard output
print["Rajkumar"]
Rajkumar
Trong đoạn mã trên, chúng tôi đã thấy rằng chúng tôi đã in “Rajkumar”, nó đã được in trên đầu ra tiêu chuẩn
Bây giờ, bằng cách sử dụng tham số tệp, chúng ta sẽ xem cách chuyển hướng đầu ra bản in sang tệp văn bản trong Python. Vì lý do này, chúng tôi phải mở tệp ở chế độ
import sys with open['file', 'w'] as sys.stderr: print['test']3 hoặc
import sys with open['file', 'w'] as sys.stderr: print['test']4. Nếu tệp không tồn tại, nó sẽ được tạo tự động
Ở đây chúng ta sẽ làm việc với file1. txt được đặt trong thư mục hiện tại nơi chúng tôi đang làm việc. Nội dung của tập tin1. txt được hiển thị bên dưới -
Ghi chú
Nếu chúng ta mở tệp ở chế độ
import sys with open['file', 'w'] as sys.stderr: print['test']3 thì tất cả nội dung trước đó của tệp sẽ bị xóa và nội dung mới sẽ được thêm vào từ vị trí bắt đầu. Nhưng nếu chúng ta mở tệp ở chế độ
import sys with open['file', 'w'] as sys.stderr: print['test']4 thì nội dung trước đó sẽ không bị xóa và nội dung mới sẽ được thêm vào sau nội dung trước đó
Cách chuyển hướng đầu ra in sang tệp văn bản trong Python
ví dụ 1
with open["file1.txt","w"] as fp:
print["Rajkumar",file=fp]
- Trong đoạn mã trên, chúng tôi đã mở
1 ở chế độ# printing in the standard output print["Rajkumar"]
import sys with open['file', 'w'] as sys.stderr: print['test']
3 và lưu trữ đối tượng tệp trong biến
3. Vì tệp được mở ở chế độ# printing in the standard output print["Rajkumar"]
import sys with open['file', 'w'] as sys.stderr: print['test']
3 nên tất cả nội dung trước đó sẽ bị xóa. - Sau đó, chúng tôi đã in
5 trong tệp chỉ định tham số# printing in the standard output print["Rajkumar"]
6 là# printing in the standard output print["Rajkumar"]
3# printing in the standard output print["Rajkumar"]
ví dụ 2
$ python3 foo.py > op.txt3
- Trong đoạn mã trên, chúng tôi đã mở
1 ở chế độ# printing in the standard output print["Rajkumar"]
import sys with open['file', 'w'] as sys.stderr: print['test']
4 và lưu trữ tệp-đối tượng trong biến
3. Vì tệp được mở ở chế độ# printing in the standard output print["Rajkumar"]
import sys with open['file', 'w'] as sys.stderr: print['test']
4 nên nội dung trước đó không bị xóa. - Sau đó, chúng tôi đã in
5 trong tệp chỉ định tham số# printing in the standard output print["Rajkumar"]
6 là# printing in the standard output print["Rajkumar"]
3# printing in the standard output print["Rajkumar"]
- Vì giá trị mặc định của tham số
Rajkumar
5 làRajkumar
6 nên nội dung mới được thêm vào dòng tiếp theo
Cảm ơn bạn đã đọc bài viết này. Nếu bạn thích nó Hãy chia sẻ bài viết. Nếu bạn muốn nói gì hãy Comment