发生错误时恢复原始文件

时间:2014-05-07 03:47:04

标签: python fwrite

我需要将数据写入文件并在文件存在时覆盖它。如果出现错误,我的代码应该捕获异常并恢复原始文件(如果适用)

如何恢复文件?我应该阅读原始内容并将内容放入列表中,然后在发生异常的情况下将该列表写入文件吗?

还有其他选择吗?非常感谢任何人都可以提供某种示例

干杯

3 个答案:

答案 0 :(得分:1)

任何恢复错误的尝试都将是脆弱的;如果您的程序在尝试恢复数据时无法继续或遇到其他错误,该怎么办?

更好的解决方案是在您知道无论您做什么成功之后,不要替换原始文件。将您需要的任何内容写入临时文件,然后在准备好后,将原始内容替换为临时文件。

答案 1 :(得分:1)

  1. 一种方法是在现有文件的末尾附加新数据。如果发现错误,请删除所有附加的错误。 如果没有错误,请删除添加之前的所有内容,以便新文件只包含附加数据。

  2. 在开始在新文件中捕获数据之前创建文件的副本。

答案 2 :(得分:1)

下面的代码将复制原始文件并设置一个标志,指示它是否存在之前。您是否在try中进行了编码,如果它到达最后它会将worked标记设置为True而您将转到其他位置,它将永远不会到达,例外仍然会被提出但finally将清理并替换该文件(如果该文件首先存在)。

import os
import shutil

if os.path.isfile(original_file):
    shutil.copy2(original_file, 'temp' + original_file)
    prev_existed = True
else:
    prev_existed = False

worked = False    
try:
    with open(original_file, 'w') as f:
        ## your code

    worked = True
except:
    raise        
finally:
    if not worked and prev_existed:
        shutil.copy2('temp' + original_file, original_file)