我遇到了使用'with'打开文件的情况。如果更改成功,我对该文件进行一些编辑并保存。但是,无论何时在文件处理过程中发生错误,我都希望文件关闭而不对文件进行任何更改。与似乎覆盖该文件,并使该文件为空。发生错误时关闭文件而不保存 - Python
下面是代码:
with open(path + "\\Config\\"+ filename, 'wb') as configfile:
config.write(configfile)
我得到“是必需的对类字节对象,而不是‘STR’”误差为上述代码这是好的。但发生错误时,文件中的所有内容都已删除。
如何明确说明代码不保存更改并恢复到更改前存在的内容?
我使用活性蟒3.5
这两个解决方案仍会更新文件,它们只是不会完全截断它。但是,最终会混合使用新旧数据,这可能同样糟糕。 – Barmar
@Barmar我在回答这个假设,即唯一的操作是一个简单的'write',并且在尝试“打开”时发生错误,但是您是对的,如果您真的*只想在成功修改文件退出'with'块,你必须做一些事情,比如你的答案。 –
确实,您的解决方案适用于问题中的简单应用。 – Barmar