目前,我已经设置了代码,在一个文本文件中最多只能写入10行使用计数器变量。再次启动程序后,我将擦除文本文件的内容以truncate开头,然后为10行写入新值。
不是要从头开始清除文件,而是要覆盖从同时保持最大10行限制。我该怎么做呢?基本上,我如何用10行限制覆盖数据,而不必使用truncate将其清除。 (这样我就可以保留一些旧数据)
print("Clearing all Previously stored pH Data")
f = open('PHAverage.txt', 'r+')
f.truncate(0)
counter=0
while True: #Polling Sensor Data
pH=Sensor Value
if counter<10:
fb = open('PHAverage.txt','a+')
fb.read
fb.seek(0)
fb.write(PH + "\n")
fb.close()
counter += 1
编辑**
基于到目前为止的反馈,举个例子,我想在文件开始时每10个轮询(或10个计数器)开始覆盖数据。这样的工作可以吗,
如果计数器%10 == 0
fb = open('PHAverage.txt','a+')
fb.seek(0)
fb.write(PH + "\n")
fb.close()
f.truncate()
计数器+ = 1
您仅谈论10行,可能最简单的方法是只读取整个文件,更改条目并将其全部写回。像此功能一样,在index
所指向的行处更新pH值:
def savePH(filename, index, ph):
with open(filename, 'r+') as f:
data = list(f)
data[index] = f"{ph}\n"
f.seek(0)
f.writelines(data)
f.truncate()
这假设您已经有一个包含10行pH数据的文件,并且没有任何错误检查。
counter = 0
while True:
pH = sensor_value
savePH('PHAverage.txt', counter, ph)
counter = (counter + 1) % 10