我可以在python中保存文本文件而不关闭它吗?

时间:2013-11-03 18:21:58

标签: python python-2.7

我正在编写一个程序,希望能够在程序完成之前查看日志文件。我注意到,在python(2.7和3)中,file.write()没有保存文件,file.close()会这样做。我不想创建具有唯一名称的一百万个小日志文件,但我希望能够在程序完成之前查看更新的日志文件。我怎么能这样做?

现在,要清楚我正在使用Ansys Workbench编写脚本(试图批量运行一些CFX)。这是一个link到教程,显示我在说什么。它们似乎已经包装了python,通过运行脚本,我可以将命令发送到各个模块。当脚本运行时,屏幕上没有控制台,它似乎正在吃掉所有print语句,因此我可以通过文件报告正在发生的事情的唯一方法。此外,我不想带一个控制台窗口,因为最终我将以批处理模式运行程序(没有接口)。但模拟需要很长时间才能运行,我不能等到程序完成后再检查发生了什么。

3 个答案:

答案 0 :(得分:13)

你需要这个:

file.flush()
# typically the above line would do. however this is used to ensure that the file is written
os.fsync(file.fileno())

请检查:http://docs.python.org/2/library/stdtypes.html#file.flush

  

file.flush()   刷新内部缓冲区,如stdio的fflush()。这可能是某些文件类对象的无操作。   注意flush()不一定将文件的数据写入磁盘。使用flush()后跟os.fsync()来确保这种行为。

已编辑:有关详细说明,请参阅此问题:what exactly the python's file.flush() is doing?

答案 1 :(得分:3)

每次写入帮助后是否有file.flush()?

哈努哈利

答案 2 :(得分:1)

这会立即将文件写入磁盘:

$.getJSON("http://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1", function(a) {stuff}

根据文件https://docs.python.org/2/library/os.html#os.fsync

  

强制将filedescriptor fd文件写入磁盘。在Unix上,这会调用本机fsync()函数;在Windows上,MS _commit()函数。

     

如果您从Python文件对象f开始,首先执行f.flush(),然后执行os.fsync(f.fileno()),以确保与f关联的所有内部缓冲区都写入磁盘