考虑让文件test.txt
包含一些随机文本。
现在我们运行以下代码:
f = open('test.txt', 'r')
f.read()
现在我们将数据从其他进程附加到test.txt
。如果没有重新开放f
我们可以read
新数据吗?
这个问题仅限于Python,只需要很少量的代码即可获得重点。
编辑:我已经尝试了我所知道的一切(冲洗,阅读,寻求等),但似乎没有更新任何东西。
编辑:由于看起来行为有所不同,具体取决于文件如何"附加到",我将给出更具体的设置。我在OS X 10.9上,并且我试图阅读由/var/log/system.log
写的syslogd
。
编辑:看来我错了。使用read
会提取新数据,但如果数据较小,则必须首先使用flush
才能读取数据。
答案 0 :(得分:4)
如果您再次阅读f
,您将获得更多数据。
f = open('my_file')
print(f.read())
# in bash: echo 'more data' >> my_file
print(f.read())
f
基本上是一个带位置的文件句柄,再次读取它只会继续从当前位置读取。
这也可能受 正在修改文件的影响。许多文本编辑器将首先保存到单独的文件,然后复制原始文件。如果发生这种情况,您将看不到更改,因为它们位于新文件中。您可以继续使用现有文件,但只要关闭它,操作系统就会完成删除。