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

如何批量加载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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:12:01