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

Python自定义load_db函数读取codedata.pkl报FileNotFoundError如何解决

问题排查及解决方案

你遇到的FileNotFoundError报错核心原因是Python运行时的工作目录下不存在你指定的codedata.pkl文件,具体排查方案如下:

FileNotFoundError: [Errno 2] No such file or directory: 'codedata.pkl'

  • 首先确认codedata.pkl文件的实际存储位置,检查文件名、后缀名拼写是否完全正确,Linux、macOS系统下需注意文件名大小写敏感
  • 可以先执行以下代码打印当前Python的工作目录,将codedata.pkl放到打印出的目录下即可解决路径找不到问题:
import os
print(os.getcwd())
  • 如果你希望固定读取和当前代码文件同目录下的codedata.pkl,可以改用绝对路径拼接逻辑,避免不同运行环境下工作目录变化导致的路径错误。

除了路径问题外,你的代码还存在两处可优化/修复点:

  1. pickle.loads()方法用于读取字节类型的序列化数据,读取文件对象需要使用pickle.load(),否则路径正确后也会触发类型错误
  2. 建议使用with上下文管理器操作文件,无需手动调用close(),可以避免异常场景下文件资源泄漏的问题

修复后的完整代码如下:

import os
import pickle

def load_db():
    """ load data base properly 
    And get ready for later use

    Return:
    -------
        cd : (list) list of tuples
    """
    # 拼接当前脚本所在目录和pkl文件名,得到绝对路径
    current_script_dir = os.path.dirname(os.path.abspath(__file__))
    pkl_file_path = os.path.join(current_script_dir, 'codedata.pkl')
    with open(pkl_file_path, 'rb') as f:
        codedata = pickle.load(f)
    return codedata

内容的提问来源于stack exchange,提问作者yannis van achter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:06:04