【问题标题】:Update line in file if already exist如果已经存在,则更新文件中的行
【发布时间】:2015-12-16 08:37:59
【问题描述】:

我正在编写一个包含 IP 地址统计信息的简单文件。

我使用这个代码:

line = str('%s %12g %12g %12g' %(IP, STAT1, STAT2, THSD))

with open(ficresul, 'a+') as fico:
   if not any(value == x.rstrip('\r\n') for x in fico):
           fico.write(value + '\n' )
           fico.close()

输出是这样的:

192.168.0.10      15.8121     15.4317          18
192.168.0.20       18.625     12.5085          18
192.168.0.24      20.8323      23.252          18
192.168.0.17      17.6208     15.9218          18

它适用于新的 IP 地址。但如果 ip 地址已经在文件中,我想更新统计信息,而不是将其写入新行。

怎么做?

【问题讨论】:

  • 仅供参考,您不需要用str(...) 括起您的字符串 - 它已经是一个字符串!

标签: python file text line


【解决方案1】:

最简单的方法是读取整个文件,在内存中更新它,然后将整个文件写回(如果有更改)。仅当您不更改任何行的长度时,尝试就地更新行才会有效,并且可能更容易出错。

将内容存储在内存中时,请使用OrderedDict 通过要查找的键来存储它们。 OrderedDict 将有助于避免对行顺序的虚假更改,这可能会很好。否则你可以使用普通的dict

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2014-05-18
    • 2021-06-03
    • 2021-10-24
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多