我遇到了使用'with'打開文件的情況。如果更改成功,我對該文件進行一些編輯並保存。但是,無論何時在文件處理過程中發生錯誤,我都希望文件關閉而不對文件進行任何更改。與似乎覆蓋該文件,並使該文件爲空。發生錯誤時關閉文件而不保存 - Python
下面是代碼:
with open(path + "\\Config\\"+ filename, 'wb') as configfile:
config.write(configfile)
我得到「是必需的對類字節對象,而不是‘STR’」誤差爲上述代碼這是好的。但發生錯誤時,文件中的所有內容都已刪除。
如何明確說明代碼不保存更改並恢復到更改前存在的內容?
我使用活性蟒3.5
這兩個解決方案仍會更新文件,它們只是不會完全截斷它。但是,最終會混合使用新舊數據,這可能同樣糟糕。 – Barmar
@Barmar我在回答這個假設,即唯一的操作是一個簡單的'write',並且在嘗試「打開」時發生錯誤,但是您是對的,如果您真的*只想在成功修改文件退出'with'塊,你必須做一些事情,比如你的答案。 –
確實,您的解決方案適用於問題中的簡單應用。 – Barmar