长时间写入控制台和日志文件(Python)
问题描述:
我正在使用此代码将stdout记录到控制台和文件。此代码的作品,将输出“测试”我的console.log文件。但是,如果我运行我的整个脚本/程序并将writer.close()移动到程序终止的末尾,则我的其他代码(可能需要分钟运行)中发生的所有打印都不会写入日志文件?这种方法有没有时间限制?我可以做什么,以便我可以运行可能运行20分钟的脚本/程序并将它们都记录到控制台和日志文件中。下面我的例子再次在快速打印上工作得很好,然后关闭作者。但如果我打印几行几分钟,然后去关闭作家我没有得到任何错误,但仍然console.log文件它是空的?长时间写入控制台和日志文件(Python)
Import sys
class MyWriter:
def __init__(self, stdout, filename):
self.stdout = stdout
self.logfile = open(filename, 'a')
def write(self, text):
self.stdout.write(text)
self.logfile.write(text)
def close(self):
self.stdout.close()
self.logfile.close()
def flush(self):
pass
writer = MyWriter(sys.stdout, os.getcwd() + '\\logs\\console.log')
sys.stdout = writer
print("test")
writer.close()
sys.exit()
答
您需要在写入数据流后刷新流。你可以做,使用f.flush()
内write
:
self.stdout.flush()
self.logfile.flush()
尝试'self.stdout.flush()'和'self.logfile.flush()'写后。 –
那工作:) geez谢谢我从来没有想到这一点。 –
你可以添加回答,所以我可以打勾 –