[英]Writing the first 10 numbers in a txt file and then updating with the new values ( python )
我对 python 很陌生,我正在尝试 plot 图表。 我有一个 print() 将我的电池电压的 output 打印到一个名为“output.txt”的 txt 文件中。
Python 脚本
f = open("C:\Scripts\output.txt", "w")
print("{0:.1f} V".format(voltage/10.0),file=f) #battery voltage
f.close()
现在,每次运行脚本时,这些值都会在 txt 文件的第一行中不断更新。 我知道它的发生,因为我使用“w”。
有没有办法我可以写入前 10 个值,然后通过删除旧值的 rest 从顶部开始更新第 11 个值。 任何帮助表示赞赏。 非常感谢您的时间!!
由于请求编辑文件意味着您正在请求操作系统读取/写入文件的权限,因此通常对于如此少量的值,一次简单地重写所有值是最简单的。 例如,
def update_file(values):
with open("C:\Scripts\output.txt", "w") as f:
for v in values:
f.write("{0:.1f} V".format(v/10.0))
values = [0]*10
update_file(values)
new_voltage = 11.0
values.pop(0)
values.append(new_voltage)
update_file(values)
读取文件,丢弃第一个值,添加你的值并覆盖文件。
只是一个想法,在收集数据时将数据存储在一个列表中可能会更容易,然后在完成收集数据后只写入最后 10 个数据点。
这是一个例子:
import time
def write_data(file_name, data):
with open(file_name, 'w') as f:
for voltage in data:
f.write("{0:.1f} V".format(voltage/10.0))
f.write('\n')
if __name__ == "__main__":
FILE = "C:\Scripts\output.txt"
N = 10 # maximum number of lines
data = [0] * N
for i in range(50): # 50 or however many data points you want to gather
voltage = 10.15 # Some function that get's the current voltage
data[i%N] = voltage # 15 % 10 = 5 so we just write over the 6th line when writing the 16th data point.
time.sleep(1) # however many seconds you want between data points
# Then once you're finished collecting data, go ahead and write it permanently once.
write_data(FILE, data)
在收集数据时,您仍然可以访问列表data
中的数据。 但是在这里你只需要写一次“output.txt”。
所以数据看起来像:
[v0, v1, v2, v3, v4, v5, v6, v7, v8, v9] # after the first 10 points have been received
[v10, v11, v12, v3, v4, v5, v6, v7, v8, v9] # after the first 13 points have been received
然后,您可以在完成收集后写入数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.