我有3个脚本。一个是starttest.py
,它启动test.py
中调用的方法的执行。方法在module.py
中定义。
每个文件中都有很多打印语句,我想从Starttest.py
文件本身捕获我的日志文件中的每个print语句。我尝试在sys.stdout
文件中使用starttest.py
,但此函数仅从starttest.py
文件中获取打印语句。它对test.py
和module.py
文件打印语句没有任何控制权。
是否有建议仅从一个地方的所有文件中捕获打印报表?
答案 0 :(得分:1)
在从test.py
或module.py
导入任何内容之前,请将tye sys.stdout
文件对象替换为您喜欢的内容:
import sys
sys.stdout = open("test-output.txt", "wt")
# Import the rest
如果您在类Unix操作系统上运行,则有一种更安全的方法,不需要替换文件对象引用。特别是因为覆盖sys.stdout
并不能保证先前的对象被破坏:
import os
import sys
fd = os.open("test-output.txt", os.O_WRONLY | os.O_CREAT, 0644)
os.dup2(fd, sys.stdout.fileno())
os.close(fd)
请注意,Python的几乎所有 daemonization 实现都使用上述技巧。
即使没有直接相关,也请记住您可以使用shell将命令输出重定向到文件(也适用于Windows):
python starttest.py >test-output.txt
答案 1 :(得分:0)
也许看看python
附带的日志记录模块