我想重定向所有输出,甚至是从导入文件的外部模块。
sys.stdout = open('logfile', 'a')
不执行外部文件完成的日志记录工作在stdout上回显。
我修改了外部模块的源代码,它们与python的“日志记录”模块密切相关,并依赖它来输出。
另外,我不想使用>来使用流重定向。操作
答案 0 :(得分:0)
试试这个:
sysstdout = sys.stdout
log_file = open("your_log_file.txt","w")
sys.stdout = log_file
print("this will be written to message.log")
sys.stdout = sysstdout
log_file.close()
或者,做正确的事并正确使用Python's logging module。
答案 1 :(得分:0)
import sys
sys.stdout = sys.stderr = open('logfile', 'a')
print('this should be working from anywhere')
import logging
logging.warn('this too')
您看到外部模块打印到控制台的原因可能是他们使用stderr
(这是logging
模块的默认输出处理程序)。