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

发布于 2021-01-29 15:01:16

我已经用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)

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

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

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

关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看