使用pickle模块读写数据异常:读取到函数对象而非目标结构
问题分析与解决
你的核心问题是保存的不是目标数据,而是函数本身:
- 在原
lesson函数中,执行pickle.dump(lesson, file)时,lesson是当前定义的函数对象,而非你想要存储的包含多个字典的列表。所以读取时自然得到的是函数类型的结果。 - 额外冗余操作:
with语句会自动管理文件的打开与关闭,手动调用file.close()完全可以删除。
修正后的代码示例
import pickle def save_lesson_data(user, date, data): # data参数传入你要保存的包含字典的列表 with open(f"{user}_{date}.data", 'wb') as file: pickle.dump(data, file) def read_lesson_data(user, date): with open(f"{user}_{date}.data", 'rb') as file: return pickle.load(file)
使用示例
# 准备要保存的包含字典的列表 my_lessons = [ {"name": "数学", "time": "14:00"}, {"name": "英语", "time": "16:00"} ] # 保存数据 save_lesson_data("张三", "20240520", my_lessons) # 读取数据 loaded_data = read_lesson_data("张三", "20240520") print(loaded_data) # 输出: [{'name': '数学', 'time': '14:00'}, {'name': '英语', 'time': '16:00'}]
内容的提问来源于stack exchange,提问作者Андрей
相关产品推荐
相关产品推荐

