读取文件然后用Python覆盖它

时间:2016-02-28 06:06:25

标签: python file patch readfile overwrite

我一直在尝试读取文件,然后用一些更新的数据覆盖它。 我试过这样做:

#Created filename.txt with some data
with open('filename.txt', 'r+') as f:
    data = f.read()
    new_data = process(data)  # data is being changed
    f.seek(0)
    f.write(new_data)

出于某种原因,它不会覆盖该文件,并且其内容保持不变。

2 个答案:

答案 0 :(得分:6)

在寻找前面后截断文件。这将删除所有现有数据。

>>> open('deleteme', 'w').write('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
>>> f = open('deleteme', 'r+')
>>> f.read()
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
>>> f.seek(0)
>>> f.truncate()
>>> f.write('bbb')
>>> f.close()
>>> open('deleteme').read()
'bbb'
>>> 

答案 1 :(得分:1)

您应该在truncate建议后seek添加对tdelaney的来电。

尝试在不同的范围内进行读写,代码更清晰,文件处理程序打开时不进行数据处理。

data = ''
with open('filename.txt', 'r') as f:
    data = f.read()

new_data = process(data)  
with open('filename.txt', 'w+') as f:
    f.write(new_data)