我有一个应用程序每隔几秒更新一次的文件,并且我想在该文件中提取单个数字段,并将其记录到列表中供以后使用。所以,我想在脚本读取源文件的地方进行无限循环,并且每当它发现某个特定图形发生变化时,就会将该图形写入输出文件。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