我可以用python保存一个文本文件而不关闭它吗?

我可以用python保存一个文本文件而不关闭它吗?,python,python-2.7,Python,Python 2.7,我正在编写一个程序,我希望能够在程序完成之前查看日志文件。我注意到,在python(2.7和3)中,file.write()不会保存文件,file.close()会保存文件。我不想创建一百万个具有唯一名称的小日志文件,但我希望能够在程序完成之前查看更新的日志文件。我该怎么做 现在,为了清楚起见,我正在使用AnsysWorkbench编写脚本(尝试批处理一些CFX运行)。这里有一个教程,展示了我所说的内容。它们似乎已经包装了python,通过运行脚本,我可以向各个模块发送命令。当脚本运行时,屏幕上

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

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

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

汉努

你需要这个:

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

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


已编辑:有关详细说明,请参见此问题:

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

file.flush()
os.fsync(file.fileno())
根据文件

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

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


令人惊叹的。谢谢大家。我喜欢在@NauticalMile中获得详细答案的方式。帮助和分享总是一件非常愉快的事情。:)我发现open(filename,mode,buffering=0)更合适。在这里,如果使用0作为第三个位置参数,它将立即刷新缓冲区。