1

我想创建一个函数来记录每个print命令,将每个命令的字符串存储到文件中的新行中。

def log(line):
    with open('file.txt', "a") as f:
        f.write('\n' + line)

这就是我所拥有的,但是有什么方法可以使用 Python 完成我所说的吗?

4

1 回答 1

2

尝试用stdout自定义类替换:

import sys
class LoggedStdout():
    def __init__(self, filename = None):
        self.filename = filename
    def write(self, text):
        sys.__stdout__.write(text)
        if not self.filename is None:
            self.log(text)
    def log(self, line):
        with open(self.filename, "a") as f:
            f.write('\n' + line)

sys.stdout = LoggedStdout('file.txt')

print 'Hello world!'

这不仅会影响print,还会影响打印到 的任何其他功能stdout,但它通常会更好。

对于生产模式日志,最好使用类似loggingmodule的东西,而不是标准 IO 流上的自制钩子。

于 2012-05-27T04:11:23.290 回答