写入Python文件而不会丢失当前内容(插入)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写入Python文件而不会丢失当前内容(插入)相关的知识,希望对你有一定的参考价值。

我的代码:

import os
file_handle = open("/home/naseer/Python/newfile","r+")
file_handle.seek(6)
file_handle.write("hai
")

我的新文件内容:

opera

mount

singapore

在我的代码中,我正在寻找我的新文件的opera(第一行)的结尾,我想在那里写hai ,即我想创建我的新文件,如下所示:

opera

hai

mount

singapore

但是我的代码会覆盖我文件的当前内容,这不是我想要的:

opera

hai

t

singapore

这不是附加的,据我所知,有一种打开文件的特定模式来实现这一点。我不知道这种要求是否违法。

如果这是非法的,为什么?

答案

你试图在文件中插入一个新行,但是.write()不能那样工作;它会覆盖现有的文件内容。

相反,您应该创建一个包含所需内容的新文件,删除旧文件,并将新文件重命名为旧文件名。

另一答案
filename = '/home/naseer/Python/newfile'

data = None

with open(filename, 'r') as myfile:
    data = myfile.read().replace('opera\n', 'opera\n hai\n')

with open(filename, 'w') as myfile:
    myfile.write(data)

那这个呢?

输入文件如下所示:

opera
 mount
 singapore

在运行此脚本后:

opera
 hai
 mount
 singapore
另一答案

只是改变

file_handle=open("/home/naseer/Python/newfile","r+") 

至 :

file_handle=open("/home/naseer/Python/newfile","a") 
file_handle.write("hai
")

“r”代表写入以前的数据,“a”代表追加。如果你想添加一个新的行追加应该适合你。

以上是关于写入Python文件而不会丢失当前内容(插入)的主要内容,如果未能解决你的问题,请参考以下文章

并发追加到文件:写入丢失

使用 Python 将列表写入文件

Python不会写入文件

/dev/null 位桶

cmd创建文件命令

Python-写文件