You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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,提问作者Андрей

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:36:01