如何批量加载pickle_files文件夹中多个同格式pickle文件
批量加载有序命名pickle文件解决方案
核心思路:你的文件命名有明确的数字序列规律,两种常用实现方式可选:
方法1:按命名规则循环读取(适合文件名严格连续的场景)
直接生成1-125的序列拼接文件名,无需遍历文件夹,效率更高
import pickle import os # 定义存储pickle的文件夹路径 folder_path = "./pickle_files" # 用列表存储所有加载的数据,也可以用字典按序号索引 all_data = [] for file_idx in range(1, 126): file_name = f"{file_idx}_my_work.pkl" file_full_path = os.path.join(folder_path, file_name) # 读取pickle文件 with open(file_full_path, "rb") as f: data = pickle.load(f) all_data.append(data) # 加载完成后all_data里就按顺序存储了1-125号文件的内容
如果需要按文件序号快速查询数据,可以把存储容器换成字典:
all_data = {} for file_idx in range(1, 126): # 中间读取逻辑和上面一致 all_data[file_idx] = data
方法2:模糊匹配读取(适合存在缺号、文件名规则有小变动的场景)
用glob模块匹配文件夹下所有符合*_my_work.pkl规则的文件,自动识别所有目标文件:
import pickle import os import glob folder_path = "./pickle_files" all_data = [] # 匹配所有符合命名规则的文件路径 target_files = glob.glob(os.path.join(folder_path, "*_my_work.pkl")) # 按文件名前缀的数字排序,避免出现1、10、11...2的错误排序 target_files.sort(key=lambda x: int(os.path.basename(x).split("_")[0])) for file_path in target_files: with open(file_path, "rb") as f: data = pickle.load(f) all_data.append(data)
额外说明
- 如果你是用pandas生成的pickle文件,可以直接用
pd.read_pickle(file_path)替换上面的pickle.load逻辑,无需手动打开文件句柄 - 如果读取时报编码错误,大概率是pickle文件由Python2生成,可以在
pickle.load()里加参数encoding="latin1"兼容
内容的提问来源于stack exchange,提问作者user9445536
相关产品推荐
相关产品推荐

