[英]python seek function return empty string on dynamic updated data
我正在使用seek函数在更新的文件中提取新行。 我的代码如下所示:
read_data=open('path-to-myfile','r')
read_data.seek(0,2)
while True:
time.sleep(sometime)
new_data=read_data.readlines()
do something with new_data
myfile是一个会不断更新的csv文件
问题是通常在while内经过几次循环后,new_data不返回任何内容。 它可以是不同的循环号。 当我检查myfile时,它仍在更新.....那么我的代码有任何问题吗? 还是有其他方法可以做到这一点?
任何帮助表示赞赏!
您有两个程序访问磁盘上的相同文件? 如果真是这样,则资源可能正在锁定。 我设置了一个示例脚本,该脚本可以写入文件,而另一个文件可以根据您提供的代码读取更改。
因此,在python的一个实例中:
import time
while True:
time.sleep(2)
with open('test.txt','a') as read_data:
read_data.seek(0,2)
read_data.write("bibbity boopity\n")
而在python的另一个实例中
import time
read_data=open('test.txt','r')
read_data.seek(0,2)
while True:
time.sleep(1)
new_data=read_data.readlines()
print(new_data)
在这种情况下,资源的更新速度慢于其读取速度,因此底部编排打印的更改将为空白。 但是,如果我加快每秒的更改速度,那么我仍然会看到它们。 但是在某些情况下,并非所有更新都可以看到。
您可能想使用异步文件读取来捕获所有更改。 Python 3 asyncio库不支持异步文件读/写,但是curio支持 。
另请参阅此问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.