Zacharia2 / SuperMemo-Toolkit

SuperMemo 增强工具(CLI命令行)。包含图链整理、EPUB图书转换导入、Latex公式转图片等。
GNU General Public License v2.0
24 stars 3 forks source link

SecureFileWrite #10

Closed Zacharia2 closed 10 months ago

Zacharia2 commented 10 months ago

使用文件备份和临时文件:在进行文件写入之前,首先创建一个临时文件进行操作,最后将临时文件重命名为目标文件。这样可以确保即使意外终止,原始文件不会被破坏,可以使用备份文件进行恢复。

示例代码:

import shutil

backup_file = 'file.txt.bak'
temp_file = 'file.txt.tmp'

try:
    # 创建并写入临时文件
    with open(temp_file, 'w') as file:
        file.write('Hello, world!')
        # 在此处进行其他文件操作

    # 备份原始文件
    shutil.copyfile('file.txt', backup_file)

    # 重命名临时文件为目标文件
    shutil.move(temp_file, 'file.txt')
except Exception as e:
    # 发生异常时回滚备份文件
    shutil.move(backup_file, 'file.txt')
    print(f"写入文件时发生错误:{str(e)}")
finally:
    # 删除临时文件和备份文件
    if os.path.exists(temp_file):
        os.remove(temp_file)
    if os.path.exists(backup_file):
        os.remove(backup_file)

通过以上这些方法,你可以在读写文件时更加保险,确保数据不会因为意外终止而丢失。

Zacharia2 commented 10 months ago

ok