我想创建一个函数来记录每个print
命令,将每个命令的字符串存储到文件中的新行中。
def log(line):
with open('file.txt', "a") as f:
f.write('\n' + line)
这就是我所拥有的,但是有什么方法可以使用 Python 完成我所说的吗?
尝试用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
,但它通常会更好。
对于生产模式日志,最好使用类似logging
module的东西,而不是标准 IO 流上的自制钩子。