Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以从打开的文件中读取新数据而不重新打开它吗?_Python_Macos_File Io - Fatal编程技术网

Python 我可以从打开的文件中读取新数据而不重新打开它吗?

Python 我可以从打开的文件中读取新数据而不重新打开它吗?,python,macos,file-io,Python,Macos,File Io,考虑使用一个文件test.txt,其中包含一些随机文本 现在,我们运行以下代码: f = open('test.txt', 'r') f.read() 现在,我们将数据从其他进程附加到test.txt。有没有办法不重新打开f就可以读取新数据 这个问题仅限于Python,只需要少量代码就可以理解这一点 编辑:我已经尝试了我所知道的一切(刷新、阅读、查找等),但似乎没有更新任何内容 编辑:由于行为似乎因文件“附加到”的方式而异,因此我将给出更具体的设置。我在OSX10.9上,我正在尝试读取由sys

考虑使用一个文件
test.txt
,其中包含一些随机文本

现在,我们运行以下代码:

f = open('test.txt', 'r')
f.read()
现在,我们将数据从其他进程附加到
test.txt
。有没有办法不重新打开
f
就可以
读取新数据

这个问题仅限于Python,只需要少量代码就可以理解这一点

编辑:我已经尝试了我所知道的一切(刷新、阅读、查找等),但似乎没有更新任何内容

编辑:由于行为似乎因文件“附加到”的方式而异,因此我将给出更具体的设置。我在OSX10.9上,我正在尝试读取由syslogd
写入的
/var/log/system.log


编辑:看来我错了。使用
读取
将提取新数据,但如果数据较小,则必须首先使用
刷新
才能读取数据。

如果再次从
f
读取,则将获得更多数据

f = open('my_file')
print(f.read())
# in bash: echo 'more data' >> my_file
print(f.read())
f
基本上是一个带位置的文件句柄,再次从中读取将继续从当前位置读取


这也会受到文件修改内容的影响。许多文本编辑器将首先保存到单独的文件中,然后复制到原始文件上。如果发生这种情况,您将无法看到新文件中的更改。您可以继续使用现有文件,但一旦您关闭该文件,操作系统将完成删除。

您不想重新打开该文件的任何特定原因?我认为同时编辑和读取文件的同一部分不是一个好主意。@tobias\u k效率?如果它是一个大文件,并且我必须关闭并重新打开它,然后每次添加一行时都要搜索到末尾,这可能是一个瓶颈。还有就是好奇…@hustmphrr在这种情况下总是只有一个编写器(syslog),所以我看不出有什么问题。你为什么要这么做?我想不出任何好的理由。