我可以在不重新打开文件的情况下读取新数据吗?
假设你有一个文件 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
,才能读取到这些数据。
1 个回答
4
如果你再次从 f
读取数据,你会得到更多的信息。
f = open('my_file')
print(f.read())
# in bash: echo 'more data' >> my_file
print(f.read())
f
基本上是一个文件的句柄,带有一个位置,从它那里再次读取数据时,会从当前的位置继续读取。
这也可能会受到 什么 在修改文件的影响。很多文本编辑器会先将内容保存到一个临时文件,然后再覆盖原来的文件。如果发生这种情况,你可能看不到更改,因为它们在一个新文件里。你可能还能继续使用现有的文件,但一旦你关闭它,操作系统就会最终删除它。