[英]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.