考虑有一个包含一些随机文本的文件 test.txt
。
现在我们运行以下代码:
f = open('test.txt', 'r')
f.read()
现在我们将来自其他进程的数据附加到 test.txt
上。有没有什么方法可以在不重新打开 f
的情况下让我们读取
新数据?
这个问题仅限于 Python,它只是理解要点所需的少量代码。
编辑:我已经尝试了我所知道的一切(冲洗、阅读、寻找等),但似乎没有任何更新。
编辑:由于行为似乎因文件“附加到”的方式而异,因此我将提供更具体的设置。我在 OS X 10.9 上,我正在尝试读取由 syslogd
写入的 /var/log/system.log
。
编辑:看来我错了。使用 read
将提取新数据,但如果数据很小,则必须先使用 flush
才能读取它。
最佳答案
如果您再次从 f
读取,您将获得更多数据。
f = open('my_file')
print(f.read())
# in bash: echo 'more data' >> my_file
print(f.read())
f
基本上是一个带有位置的文件句柄,再次读取它只会继续从当前位置读取。
这也可能受到修改文件的内容的影响。许多文本编辑器会先保存到一个单独的文件,然后再复制到原来的文件中。如果发生这种情况,您将看不到新文件中的更改。您可以继续使用现有文件,但只要您关闭它,操作系统就会完成删除。
关于python - 我可以在不重新打开文件的情况下从打开的文件中读取新数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25413115/