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

如何在Google Colab中读取已上传的Pickle文件(Train.p)?

正确读取Colab中上传的Pickle文件方法

嘿,我来帮你搞定这个读取pickle文件的问题!你之前的代码出错主要是两个核心原因:一是用了处理文本的io.StringIO来处理二进制的pickle文件,二是错误地把字节内容传给了open函数(open需要的是文件路径,不是内存里的流对象)。

下面给你两种简单可靠的常规读取方法:

方法一:直接读取上传的字节内容

这是最快捷的方式,不需要把文件保存到Colab本地,直接用pickle.loads解析上传得到的字节数据:

from google.colab import files
import pickle

# 执行上传操作(你已经完成这步,这里完整写出方便参考)
uploaded = files.upload()

# 从uploaded字典中取出'train.p'对应的字节内容,直接解析
train = pickle.loads(uploaded['train.p'])

方法二:先保存到Colab本地再读取

如果你需要把文件留在Colab的文件系统中方便后续重复调用,可以先把上传的字节内容写入本地文件,再用常规的pickle.load读取:

from google.colab import files
import pickle

# 上传文件
uploaded = files.upload()

# 将字节内容写入本地的'train.p'文件
with open('train.p', 'wb') as local_file:
    local_file.write(uploaded['train.p'])

# 读取本地的pickle文件
with open('train.p', 'rb') as file:
    train = pickle.load(file)

再补个小提醒:uploaded['train.p']返回的是字节串,不是文件路径,也不是文本字符串。Pickle是二进制格式,必须用二进制模式处理,所以不能用io.StringIO(这是给文本内容用的),也不能把它直接传给open函数——open是用来打开磁盘上的实体文件的,不是处理内存里的字节数据。

内容的提问来源于stack exchange,提问作者Joe Phongpreecha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:07:40