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

时间:2017-12-29 18:06:32

标签: python file-io

我的代码:

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

我的 newfile 内容:

opera\n
mount\n
singapore

在我的代码中,我正在寻找 newfile opera(第一行)的结尾,我想在那里写hai\n,即我想要使我的 newfile 如下所示:

opera\n
hai\n
mount\n
singapore

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

opera\n
hai\n
t\n
singapore

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

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

3 个答案:

答案 0 :(得分:1)

您正在尝试在文件中插入新行,但.write()不能正常工作;它覆盖现有的文件内容。

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

答案 1 :(得分:1)

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\n mount\n singapore

在运行此脚本后:

opera\n hai\n mount\n singapore

答案 2 :(得分:0)

只需更改

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

致:

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

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