写入文本文件不会实时发生。如何解决这个问题

时间:2017-03-27 14:35:04

标签: python python-2.7

我有一个需要很长时间才能运行的python脚本。

我在整个脚本中放置了打印件以观察其进度。 由于这个脚本有不同的程序,其中一些程序会打印许多信息,因此直接打印到屏幕上是不可行的。

因此,我使用的是报告文件

f_report = open(os.path.join("//shared_directory/projects/work_area/", 'report.txt'), 'w')

我打印我的按摩:

 f_report.write(" "+current_image+"\n")

但是,当我在脚本运行时查看文件时,我看不到消息。它们仅在程序完成并关闭文件时出现,使我的方法无法用于监视正在进行的进度。 为了让python实时将消息输出到报告文件,我该怎么办?

非常感谢。

2 个答案:

答案 0 :(得分:4)

您应该使用 flush()函数立即写入文件。

f_report.write(" "+current_image+"\n")    
f_report.flush()

答案 1 :(得分:1)

试试这个:

newbuffer = 0
f_report = open(os.path.join("//shared_directory/projects/work_area/", 'report.txt'), 'w', newbuffer)

它设置一个0缓冲区,它将推动OS将内容“立即”写入文件。好吧,不同的操作系统可能会有不同的行为,但总的来说,内容会立即被刷新。