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

lea*_*erX 5 python seek file-writing python-3.x

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

我必须在Total: __部分之后写出我计算的总数,这意味着结果行将更改为,例如:something something something...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)
Run Code Online (Sandbox Code Playgroud)

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

所以它在位置 21 到 23 处找到了“__”,这意味着我想在位置 24 处插入总数。我知道我必须以某种方式使用该seek()方法来做到这一点。但是我试过几次都失败了。任何建议,将不胜感激。

重要提示:文件的原始内容将按原样保留。只有总的变化——没有别的。

Eug*_*ash 7

如果文件不是特别大,您可以将其内容作为字符串(或行列表)读取到内存中,进行替换并将内容写回。像这样的东西:

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)
Run Code Online (Sandbox Code Playgroud)