【问题标题】:Python - Appending new floats and deleting old floats in a text filePython - 在文本文件中添加新的浮点数并删除旧的浮点数
【发布时间】:2015-03-30 03:33:12
【问题描述】:

上述重复通知是错误的。我不仅想附加到文本文件。我还想删除文本文件中最旧的部分,以便只保留最新数据。

我有一个文本文件,其中包含类似于下面的一些信息。

14.614, 14.624, 14.512, 14.615, etc.

每十分钟添加一个数字。我想要单独的文本文件来保存过去 365 天、180 天、90 天、60 天、30 天、14 天、7 天和 2 天的数字。执行每个操作的代码都是相同的,只是数字不同。这是我尝试过的,但它将每个新数字都添加到列表的前面,而不是末尾。

ff = open('AvailableTickets.txt', 'r').read()
ff2 = ff
ff = ff.replace(',', '')
ff = ff.split()
ff = map(float, ff)
if len(ff) < 10:
    ff3 = open('TestTickets.txt', 'r+')
    ff3.write(str(ff2))
else:
        ff3 = open('TestTickets.txt', 'r+')
        for x in range(0, 10):
            ff3.write(str(ff[len(ff)-x])+', ')

【问题讨论】:

  • 不是重复的。这篇文章的目的是找出如何将文件限制为仅包含最新信息,而不是所有信息。这意味着追加,但也删除列表中超过设定数量的旧信息。

标签: python file text append


【解决方案1】:

您应该以append 模式打开文件。你应该更好:

  • 使用with语句正确关闭文件并在写入后刷新,
  • 尽量避免不必要的变量遮蔽(ffff2),
  • 使用显示变量所包含内容的名称,最后,
  • 使用索引运算符,而不是范围和手动索引处理:

with open('AvailableTickets.txt', 'r') as fin:
    tickets_raw = fin.read()
    tickets_list = tickets_raw.split(', ')
    with open('TestTickets.txt', 'a') as f:
        if len(tickets_list) < 10:
            f.write(tickets_raw)
        else:
            f.write(', '.join(tickets_list[-10:]))

然后我真的想知道你的逻辑是什么 10 元素检查你正在做的事情,因为这对我来说没有多大意义。在我看来,根据你运行这个 sn-p 的方式,你可能会得到重复。

【讨论】:

  • 这10个元素只是为了在我运行脚本时快速查看结果。我将使用 288 2 天,1008 7 天,依此类推。在脚本结束时,未定义票证。我用tickets_list试了一下,效果很好。
  • 另外,我尝试使用追加打开 TestTickets.txt (a,但这会添加到 TestTickets.txt 中,同时还会复制以前的内容。如果我用读/写打开它 (r+ ) 它按我想要的方式工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 2016-11-14
  • 2019-10-25
  • 2014-04-06
  • 1970-01-01
相关资源
最近更新 更多