Thiết bị xuất chuẩn dup2 python
thiết lập def (tự, cfg). bản thân. loglevel = bản thân. LOG_LEVELS. nhận được (cfg. mức đăng nhập. thấp hơn (), ghi nhật ký. THÔNG TIN) bản thân. error_log. setLevel(tự. loglevel) bản thân. truy cập_log. setLevel(đăng nhập. THÔNG TIN) #thiếtgunicorn. xử lý lỗi nếu tự. cfg. capture_output và cfg. nhật ký lỗi. = "-". cho luồng trong sys. thiết bị xuất chuẩn, hệ thống. tiêu chuẩn. dòng. tuôn ra () tự. tệp nhật ký = mở (cfg. errorlog, "a+") os. dup2(tự. tệp nhật ký. fileno(), sys. tiêu chuẩn. fileno()) hệ điều hành. dup2(tự. tệp nhật ký. fileno(), sys. tiêu chuẩn. fileno()) tự. _set_handler( tự. error_log, cfg. nhật ký lỗi, ghi nhật ký. Trình định dạng (tự. error_fmt, tự. datefmt), ) # đặt gunicorn. truy cập trình xử lý nếu cfg. accesslog không phải là Không có. bản thân. _set_handler( tự. truy cập_log, cfg. nhật ký truy cập, fmt=ghi nhật ký. Trình định dạng (tự. access_fmt), luồng=sys. thiết bị xuất chuẩn, ) # đặt trình xử lý nhật ký hệ thống nếu cfg. nhật ký hệ thống. bản thân. _set_syslog_handler(tự. error_log, cfg, tự. syslog_fmt, "lỗi") tự. _set_syslog_handler(tự. access_log, cfg, bản thân. syslog_fmt, "truy cập") dictConfig(ĐĂNG NHẬP)
Bây giờ, 2chỉ là một tệp đối tượng khác, sẽ được Python mở trước khi chương trình của bạn bắt đầu. Những gì bạn làm với đối tượng tệp đó là tùy thuộc vào bạn, nhưng nó không thực sự khác biệt với bất kỳ đối tượng tệp nào khác, chỉ là bạn không cần một đối tượng tệp 3
sẽ lặp lại thông tin qua đầu vào tiêu chuẩn cho đến khi đạt đến phần cuối của tệp. And this thing also so
Câu hỏi đầu tiên của bạn thực sự là về các cách khác nhau để sử dụng một tệp đối tượng Thứ hai, nó được đọc từ đâu? . Trên Windows, nó là xử lý tệp 0 (không). Bộ mô tả tệp / tay cầm 0 được kết nối với bảng điều khiển hoặc tty theo mặc định, do đó, trên thực tế, nó đang đọc từ bàn phím. Tuy nhiên, nó có thể được chuyển hướng thông thường bằng shell (như bash hoặc cmd. exe) bằng cách sử dụng cú pháp như sau
Điều đó làm thay đổi bộ mô tả tệp bằng cách không đọc tệp thay vì bàn phím. Trên UNIX hoặc Linux, điều này sử dụng lệnh gọi cơ bản 4. Đọc tài liệu trình bao của bạn để biết thêm thông tin về chuyển hướng (hoặc có thể 5 nếu bạn dũng cảm)25 hữu ích 1 bình luận chia sẻ Tôi muốn kiểm tra một số mã (python 3) sử dụng trực tiếp các hàm 6và 7. Theo tôi hiểu, cách dễ nhất để thực hiện điều này là thêm phụ thuộc. đã sửa đổi mã để nó nhận các luồng bắt đầu vào và bắt đầu làm đối số, sử dụng 2và 9theo mặc định và chuyển vào các đối tượng giả trong quá trình thử nghiệm. Rõ ràng là phải làm gì với 6các cuộc gọi 2Tuy nhiên, 7không có đối số cho các luồng đầu vào và đầu ra. Đoạn mã sau có tái tạo chính xác hành động vi của nó không? 4Tôi đã xem xét việc phát triển khai 7, và nó thực hiện khá nhiều phép thuật, gọi là 3và kiểm tra 4và 5hơn là gọi bất kỳ 6 phương pháp nào - tôi không biết bắt đầu từ đâu với công việc lệch lạc của họ
3 hữu ích 4 bình luận 4. 0k xem chia sẻ câu trả lời 6 Nếu bạn gán một đối tượng giống tệp cho hàm 2 của Python, thì 7hàm của Python sẽ sử dụng nó thay cho đầu vào chuẩn. Nhưng hãy nhớ gán lại 2 cho tiêu chuẩn sau khi bạn hoàn tất. Thủ thuật tương tự áp dụng cho 9. Bạn có thể làm điều gì đó như sau 4Hai dòng này 0sẽ sử dụng các tệp được định nghĩa duy nhất ( 9và 0) thay vì đầu vào tiêu chuẩn và đầu ra tiêu chuẩnCẬP NHẬT. Nếu bạn không muốn xử lý các tệp vật lý, hãy xem 1mô-đun. Nó cung cấp lớp 2 cho phép bạn thực hiện các dòng văn bản hoạt động trong bộ nhớ |