关于日志记录:如何自动将打印语句的输出定向到python中的文件?

How to automatically direct print statements' outputs to a file in python?

本问题已经有最佳答案,请猛点这里访问。

我有一个python脚本,它包含一些用于调试目的的print语句。现在我发现很难在控制台中阅读它们。python是否有自动将所有print语句的输出定向到指定文本文件的库?顺便说一下,我使用的是Windows7,而不是Linux。我也不从命令行运行脚本。

所以我想要的是如下:

1
2
3
4
5
6
import logger_module

log_file ="log.txt"
logger_module.activate_logging(log_file)

print"blablabla"

当我运行上面的脚本时,我应该在log.txt文件中看到"blablabla"。


我相信这是你能得到的最接近的:

1
2
3
import sys
sys.stdout = open('file', 'w')
print 'test' # prints test to file

如果您想写入多个位置,可以使用以下方法。任何具有write方法的对象都可以在python中分配给sys.stdout。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys

class Logger(object):
    def __init__(self, *files):
        self.files = files

    def write(self, obj):
        for f in self.files:
            f.write(obj)

f = open('file', 'w')
sys.stdout = Logger(f, sys.stdout)

print"Python Magic"