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