Python Pickle数据持久化问题:实现每次运行自动累加1并保存
修复后的Pickle累加代码实现
原代码存在的问题
- 未导入
os模块,调用os.system("clear")会触发报错 - 逻辑顺序颠倒:先以写入模式清空文件,再读取,无法获取历史数值
- 错误操作文件对象:
name = filehandler +1,文件对象不能直接与整数运算,应操作文件内存储的数值 - 未处理文件不存在的场景:首次运行时没有初始化逻辑,直接写文件会丢失初始值设置
正确代码实现
import pickle import os # 清屏(可选操作) os.system("clear") counter_file = "counter.dat" try: # 尝试读取已有计数文件 with open(counter_file, 'rb') as f: current_count = pickle.load(f) except FileNotFoundError: # 文件不存在时,初始化计数为1 current_count = 1 # 累加计数 current_count += 1 # 将新计数写入文件 with open(counter_file, 'wb') as f: pickle.dump(current_count, f) # 打印当前计数结果 print(current_count)
代码说明
- 用
try-except捕获FileNotFoundError,自动处理首次运行的初始化逻辑 - 使用
with语句管理文件上下文,无需手动关闭文件,避免资源泄漏 - 严格遵循「读取/初始化→累加→保存」的逻辑,确保每次运行都基于上一次的结果更新
- 文件名改为
counter.dat更贴合功能,你也可以替换为自己需要的文件名
内容的提问来源于stack exchange,提问作者ILoveToCodeandLearn
相关产品推荐
相关产品推荐

