我正在使用此代码将stdout记录到控制台和文件。此代码有效并将“test”输出到我的console.log文件。但是,如果我运行我的整个脚本/程序并将writer.close()移动到程序终止的末尾,那么在我的其他代码中发生的所有打印(可能需要运行mins)都不会写入日志文件?这个方法有时间限制吗?我该怎么做才能运行可能运行20分钟的脚本/程序并将其记录到控制台和日志文件中。我的下面的例子再次在快速打印上正常工作然后关闭作者。但是,如果我打印几行几分钟然后去关闭编写器我没有得到任何错误,但是console.log文件它是空的?
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()
答案 0 :(得分:1)
一旦你写完它们,你就需要冲洗你的流。您可以使用f.flush()
内的write
执行此操作:
self.stdout.flush()
self.logfile.flush()