遍历读取文件夹中pickle模型时反复报错,寻求解决方案
问题分析与解决方案
核心问题
你的代码存在两个关键错误,导致无法读取模型文件:
- 路径格式化失效:路径字符串未正确替换
lowerCount变量,实际访问的是带{lowerCount}字面量的无效路径,触发文件找不到的错误。 - 变量未初始化:
lowermodel未预先定义为列表/字典,直接用lowermodel[i]会引发未定义错误。
修正后的代码
方案1:按固定数量读取(适配0-18命名的文件)
import pickle import os # 定义文件夹路径 folder_path = "/Users/rama/Desktop/lowermodels" # 初始化存储模型的列表 lowermodel = [] # 遍历19个模型文件 for count in range(19): # 拼接正确的文件路径(自动适配系统分隔符) file_path = os.path.join(folder_path, f"{count}.sav") # 用with语句安全读取模型,自动关闭文件 with open(file_path, 'rb') as f: model = pickle.load(f) lowermodel.append(model)
方案2:遍历文件夹所有.sav文件(更灵活,无需硬编码数量)
import pickle import os folder_path = "/Users/rama/Desktop/lowermodels" lowermodel = [] # 自动遍历文件夹中所有.sav格式的模型文件 for filename in os.listdir(folder_path): if filename.endswith(".sav"): file_path = os.path.join(folder_path, filename) with open(file_path, 'rb') as f: model = pickle.load(f) lowermodel.append(model)
注意事项
- 如果你的文件名是
1.sav到19.sav,请把方案1中的range(19)改为range(1,20)。 - 使用
os.path.join拼接路径,能避免不同操作系统路径分隔符的兼容性问题。
内容的提问来源于stack exchange,提问作者RAMA
相关产品推荐
相关产品推荐

