写入控制台和日志文件延长时间(Python)

时间:2017-08-03 15:00:00

标签: python

我正在使用此代码将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()

1 个答案:

答案 0 :(得分:1)

一旦你写完它们,你就需要冲洗你的流。您可以使用f.flush()内的write执行此操作:

self.stdout.flush()  
self.logfile.flush()