小编典典

如何在不删除原始内容的情况下在文本文件中的特定位置书写?

python

我已经用Python编写了一个遍历文件的代码,提取所有数字,并将它们加起来。现在,我必须在文件的特定位置写入“总计”(整数)somethingsomething something...Total: __00__ something something

我必须将精确计算的总数写在该Total: __部分的后面,这意味着结果行将变为,例如:something somethingsomething...Total: __35__ something something

到目前为止,我在写部分中有以下内容:

import re
f1 = open("filename.txt", 'r+')
for line in f1:
    if '__' in line and 'Total:' in line:
        location = re.search(r'__', line)
print(location)

打印输出: <_sre.SRE_Match object; span=(21, 23), match='__'>

因此它在21到23的位置找到了“
__”,这意味着我想在24位置插入总数。我知道我必须以某种方式使用此seek()方法。但是我已经尝试过几次并且失败了。任何建议,将不胜感激。

重要说明: 文件的原始内容应保留原样。只有总的变化-没有别的。


阅读 186

收藏
2021-01-20

共1个答案

小编典典

如果文件不是特别大,则可以将其内容以字符串(或行列表)的形式读取到内存中,进行替换,然后将内容写回。像这样:

total = 'Total: __{}__'.format(12345)

with open(filename, 'r+') as f:
    contents = f.read().replace('Total: __00__', total)
    f.seek(0)
    f.truncate()
    f.write(contents)
2021-01-20