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

2024-06-06 10:25:01 发布

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

我正在写一个简单的文件,其中包含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地址已经在文件中,我想更新统计信息,而不是将其写入新行

怎样才能做到呢


Tags: 文件代码ip信息valueaswithline
1条回答
网友
1楼 · 发布于 2024-06-06 10:25:01

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

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

相关问题 更多 >