Python 在文件中追加特定行

Python 在文件中追加特定行,python,python-3.x,Python,Python 3.x,如何编辑文件的特定行 范例 What's your name? What do you do? What's your favourite colour? 然后在运行一个特定的程序后,结果将是 What's your name? : Thatile What do you do? : I am a student What's your favourite colour? : Black 使用file.seek()覆盖,我想保留文件中的原始文本

如何编辑文件的特定行

范例

    What's your name?
    What do you do?
    What's your favourite colour?
然后在运行一个特定的程序后,结果将是

    What's your name? : Thatile
    What do you do? : I am a student
    What's your favourite colour? : Black
使用file.seek()覆盖,我想保留文件中的原始文本,只需编辑行

一个简单的解决方案(尽管内存效率)是将整个文件读取到内存中(使用
file.read()
file.readline()
循环),编辑获得的数据以附加答案,然后将修改后的数据写入原始文件(覆盖其原始内容)

同样,这是的内存效率,在一个大文件上可能需要很长时间。

简短回答:您不能“编辑文件中的特定行”,您必须读取整个文件并用编辑的内容覆盖它。安全且内存有效的方法是

  • 打开一个临时文件进行写入
  • 打开原始文件进行读取
  • 循环原始文件的内容,对于每一行,使用新内容更新该行并将其写入临时文件
  • 关闭所有文件并用临时文件替换原始文件

  • 你到底是如何使用seek的?我看不出它与追加一行有什么关系。我看到了,但没有多大帮助。Python是在调用
    write
    时写入磁盘文件,还是仅在调用
    close
    时写入磁盘文件?如果是后者(我相信是这样的话),它将不会真正具有内存效率…@Aimery默认情况下Python使用OS/文件系统缓冲-是的,它具有内存效率,因为系统将在缓冲区达到给定大小(以及关闭文件时剩余的所有内容)时将其刷新到磁盘。通过手动重写,您在内存使用和IO延迟之间找到更好平衡的机会非常低。。。