【发布时间】:2016-06-11 07:12:14
【问题描述】:
我一直在尝试读取一个文件,然后用一些更新的数据覆盖它。 我试过这样做:
#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)
由于某种原因,它不会覆盖文件并且它的内容保持不变。
【问题讨论】:
-
你能详细说明什么不起作用吗?
-
是读文件不写文件,还是什么都不写?
-
w+截断文件,因此f.read()上的文件始终为空。a+也会创建文件,但您需要在阅读之前找到开头。 -
@AChampion 你说得对,我稍微改变了我的问题。
-
什么不起作用,这将覆盖数据 - 但如果更新小于原始数据,则会留下数据。只需将调用拆分为 2 个
with语句,一个with open(..., 'r')和一个with open(..., 'w')- 截断。
标签: python file patch readfile overwrite