我正在运行两个.py文件。一个会在1到10之间创建一个随机浮点数,然后将其写入文件中。 另一个正在绘制这些数字。我的动画在编写和“保存”时工作正常,但是随着编写过程的自动化,只有在停止程序时才保存数据,并且file.close()会起作用(在循环之外)。
我曾尝试将.open和.close()放入循环中,但是这样只能保存我写的最后一行,而且我仍然需要暂停程序。
编写者代码:
import random
import time
i=0
with open('datatest.txt', 'w') as a:
while True:
line = str(i) + ',' + str(random.uniform(1,10)) + '\n'
a.write(line)
print(line)
i += 1
time.sleep(9)
图形动画代码:
#!/usr/bin/env python
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
def animate(i):
print("inside animate")
pullData = open("data.txt","r").read()
dataArray = pullData.split('\n')
xar = []
yar = []
for eachLine in dataArray:
if len(eachLine)>1:
x,y = eachLine.split(',')
xar.append(float(x))
yar.append(float(y))
ax1.clear()
ax1.plot(xar,yar)
plt.xlabel('Hora')
plt.ylabel('Valor Dado')
plt.title('Pseudo-Sensor x Hora')
ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()
我原本希望查看正在保存在txt文件中的书写过程的“实时操作”,所以随着每个保存步骤的运行,我的图形也会刷新。
感谢您的时间!
答案 0 :(得分:0)
您可以每次以附加模式打开文件
while True:
with open('datatest.txt', 'a+') as a:
line = str(i) + ',' + str(random.uniform(1,10)) + '\n'
a.write(line)
print(line)
i += 1
time.sleep(9)