更新文件中的行(如果已存在)

时间:2015-12-16 08:37:59

标签: python file text line

我正在编写一个包含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地址已经在文件中,而不是在新行中写入。

怎么做?

1 个答案:

答案 0 :(得分:1)

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

将内容存储在内存中时,使用OrderedDict按要查找的密钥存储它们。 OrderedDict将有助于避免对行的排序进行虚假更改,这可能会很好。否则,您可以使用常规dict