写入和覆盖一个限制为10行的文件

2024-10-01 15:48:42 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我有我的代码设置,它最多只能在文本文件中写入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


Tags: 数据txtdatafbcounter计数器seekopen
1条回答
网友
1楼 · 发布于 2024-10-01 15:48:42

你只说了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

相关问题 更多 >

    热门问题