Python chuyển hướng thiết bị xuất chuẩn sang quy trình khác
Theo mặc định, đầu ra tiêu chuẩn được in ra bàn điều khiển. Tuy nhiên, bạn có thể chuyển hướng đầu ra đó sang một tệp bằng bất kỳ chức năng nào sau đây Show 1. chuyển hướng vỏCách tiếp cận phổ biến nhất để chuyển hướng đầu ra tiêu chuẩn sang một tệp là sử dụng chuyển hướng shell. Ưu điểm của phương pháp này là nó không yêu cầu bất kỳ thay đổi mã nào. Đây là cách bạn có thể chuyển hướng đầu ra 1 2 $ trăn chính. py > tệp.
Tải xuống mã 2. Sử dụng sys.stdoutMột giải pháp đơn giản khác để chuyển hướng đầu ra tiêu chuẩn sang tệp là đặt 1 2 3 4 5 6 nhập sys
đường dẫn = 'đường dẫn/đến/một số/dir/tệp. txt' sys. stdout = mở(đường dẫn, 'w') in('Xin chào thế giới')
Tải xuống mã 3. Sử dụng chức năng $ cat music.mp3 > /dev/audio1Một tùy chọn khác là sử dụng hàm $ cat music.mp3 > /dev/audio1 trong Python 3. 4 thiết lập trình quản lý bối cảnh để chuyển hướng sys.stdout sang tệp khác. Đây là một ví dụ làm việc1 2 3 4 5 6 7 nhập contextlib
đường dẫn = 'đường dẫn/đến/một số/dir/tệp. txt' với mở(đường dẫn, 'w') as f: với contextlib. redirect_stdout(f). in('Xin chào thế giới')<
Tải xuống mã 4. Lớp ghi nhật ký tùy chỉnhCuối cùng, bạn có thể viết lớp ghi nhật ký tùy chỉnh cho phù hợp với nhu cầu của mình. Để minh họa, lớp sau in đầu ra tiêu chuẩn cho cả bảng điều khiển và tệp Chuyển hướng là một tính năng trong Linux để khi thực hiện lệnh, bạn có thể thay đổi các thiết bị đầu vào/đầu ra tiêu chuẩn. Quy trình công việc cơ bản của bất kỳ lệnh Linux nào là nó nhận đầu vào và đưa ra đầu ra
Với chuyển hướng, đầu vào/đầu ra tiêu chuẩn ở trên có thể được thay đổi Trong hướng dẫn này, chúng ta sẽ học-
Bấm vào đây nếu video không vào được Chuyển hướng đầu raKý hiệu ‘>‘ được sử dụng để chuyển hướng đầu ra (STDOUT) Thí dụ. ls -al > listings Ở đây, đầu ra của lệnh ls -al được chuyển hướng đến tệp “danh sách” thay vì màn hình của bạn Ghi chú. Sử dụng tên tệp chính xác trong khi chuyển hướng đầu ra lệnh sang một tệp. Nếu có một tệp hiện có cùng tên, lệnh được chuyển hướng sẽ xóa nội dung của tệp đó và sau đó nó có thể bị ghi đè. ” Nếu bạn không muốn một tệp bị ghi đè mà muốn thêm nhiều nội dung hơn vào một tệp hiện có, thì bạn nên sử dụng toán tử ‘>>‘ Bạn có thể chuyển hướng đầu ra tiêu chuẩn, không chỉ tệp mà còn cả thiết bị $ cat music.mp3 > /dev/audio Lệnh cat đọc file nhạc. mp3 và gửi đầu ra tới/dev/audio là thiết bị âm thanh. Nếu cấu hình âm thanh trong PC của bạn là chính xác, lệnh này sẽ phát tệp nhạc. mp3 chuyển hướng đầu vàoKý hiệu ‘<‘ được sử dụng để chuyển hướng đầu vào (STDIN) Thí dụ. Chương trình mail trong Linux có thể giúp bạn gửi email từ Terminal Bạn có thể nhập nội dung của email bằng bàn phím thiết bị tiêu chuẩn. Nhưng nếu bạn muốn đính kèm Tệp vào email, bạn có thể sử dụng toán tử định hướng lại đầu vào theo định dạng sau Mail -s "Subject" to-address < Filename Điều này sẽ đính kèm tệp với email và nó sẽ được gửi đến người nhận Các ví dụ trên rất đơn giản. Hãy xem xét một số kỹ thuật định hướng lại nâng cao sử dụng Trình mô tả tệp Bộ mô tả tệp (FD)Trong Linux/Unix, mọi thứ đều là tệp. Tệp thông thường, Thư mục và thậm chí cả Thiết bị đều là tệp. Mỗi Tệp có một số được liên kết được gọi là Bộ mô tả tệp (FD) Màn hình của bạn cũng có Bộ mô tả tệp. Khi một chương trình được thực thi, đầu ra được gửi đến Bộ mô tả tệp của màn hình và bạn sẽ thấy đầu ra của chương trình trên màn hình của mình. Nếu đầu ra được gửi đến Bộ mô tả tệp của máy in, đầu ra của chương trình sẽ được in Chuyển hướng lỗiBất cứ khi nào bạn thực thi một chương trình/lệnh tại thiết bị đầu cuối, 3 tệp luôn mở, viz. , đầu vào tiêu chuẩn, đầu ra tiêu chuẩn, sai số tiêu chuẩn Các tệp này luôn hiện diện bất cứ khi nào chương trình được chạy. Như đã giải thích trước một bộ mô tả tệp, được liên kết với từng tệp này Bộ mô tả tệp của tệpSTDIN đầu vào tiêu chuẩn 0 STDOUT đầu ra tiêu chuẩn 1 Standard Error STDERR 2 Theo mặc định, dòng lỗi được hiển thị trên màn hình. Chuyển hướng lỗi đang định tuyến các lỗi đến một tệp không phải là màn hình Tại sao chuyển hướng lỗi?Định hướng lại lỗi là một trong những tính năng rất phổ biến của Unix/Linux Người dùng UNIX thường xuyên sẽ cho rằng nhiều lệnh gây ra cho bạn rất nhiều lỗi
Giải pháp là chuyển hướng lại các thông báo lỗi đến một tệp ví dụ 1 $ myprogram 2>errorsfile Ở trên, chúng tôi đang thực hiện một chương trình có tên myprogram Bộ mô tả tệp cho lỗi tiêu chuẩn là 2 Sử dụng “2>”, chúng tôi chuyển hướng đầu ra lỗi sang tệp có tên “errorfile” Do đó, đầu ra của chương trình không bị lộn xộn với các lỗi ví dụ 2 Đây là một ví dụ khác sử dụng câu lệnh find – find . -name 'my*' 2>error.log Sử dụng lệnh “find”, chúng tôi đang tìm kiếm “. ” thư mục hiện tại cho tệp có “tên” bắt đầu bằng “của tôi” ví dụ 3. Hãy xem một ví dụ phức tạp hơn, Quản trị viên máy chủ thường xuyên, liệt kê các thư mục và lưu trữ cả lỗi và đầu ra tiêu chuẩn vào một tệp, tệp này có thể được xử lý sau. Đây là lệnh ls Documents ABC> dirlist 2>&1 Nơi đây,
Bản tóm tắt
Guru99 được tài trợ bởi Acunetix Acunetix, nhà phát triển trình quét bảo mật ứng dụng web cực kỳ chính xác đã tài trợ cho dự án Guru99 để giúp quét hơn 4500 lỗ hổng web một cách chính xác và ở tốc độ cao nhất |