我有一個應用程序每隔幾秒更新一次的文件,並且我想在該文件中提取單個數字段,並將其記錄到列表中供以後使用。所以,我想在腳本讀取源文件的地方進行無限循環,並且每當它發現某個特定圖形發生變化時,就會將該圖形寫入輸出文件。Python:重新讀取文件的內容
我不知道爲什麼我不能讓Python注意到源文件被改變:
#!/usr/bin/python
import re
from time import gmtime, strftime, sleep
def write_data(new_datapoint):
output_path = '/media/USBHDD/PythonStudy/torrent_data_collection/data_one.csv'
outfile = open(output_path, 'a')
outfile.write(new_datapoint)
outfile.close()
forever = 0
previous_data = "0"
while forever < 1:
input_path = '/var/lib/transmission-daemon/info/stats.json'
infile = open(input_path, "r")
infile.seek(0)
contents = infile.read()
uploaded_bytes = re.search('"uploaded-bytes":\s(\d+)', contents)
if uploaded_bytes:
current_time = strftime("%Y-%m-%d %X", gmtime())
current_data = uploaded_bytes.group(1)
if current_data != previous_data:
write_data(","+ current_time + "$" + uploaded_bytes.group(1))
previous_data = uploaded_bytes.group(1)
infile.close()
sleep(5)
else:
print "couldn't write" + strftime("%Y-%m-%d %X", gmtime())
infile.close()
sleep(60)
由於現在的(凌亂)腳本一次正確寫,然後我可以看到雖然我的源文件(stats.json)文件正在改變,但我的腳本從不改變任何改變。它繼續運行,但我的輸出文件不會增長。
我以爲open()
和close()
會做的伎倆,然後嘗試投擲.seek(0)
。
我缺少什麼文件方法來確保python重新打開並重新讀取我的源文件(stats.json)?
「其他應用程序」超出了您的控制範圍嗎?有沒有機會修改它的代碼? –
是的,它超出了我的控制範圍。 – polpetti