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

如何解决Colab中读取pickle二进制文件的嵌入空字节错误?

解决Colab中读取文件时出现的"embedded null byte"错误

你遇到的这个ValueError: embedded null byte问题,根源是对google.colab.files.upload()的返回值理解有误。咱们一步步拆解问题并解决:

错误原因分析

files.upload()执行后,返回的uploaded字典里,键是上传的文件名,值是文件的二进制内容,而不是文件在Colab中的路径。你原来的代码试图用open(uploaded['train_qa.txt'], "rb")去打开这个二进制数据,相当于把字节流当成了文件路径字符串,自然会出现包含null字节的错误。

针对性解决方案

有两种直接解决的方式,根据你的需求选择:

方案1:直接读取Colab本地目录中的文件

上传的文件会被保存到Colab的当前工作目录下,你可以直接用文件名打开:

import pickle

# 可选:执行后列出当前目录文件,确认文件已上传
!ls

# 直接用文件名打开并加载数据
with open('train_qa.txt', "rb") as fp:
    train_data = pickle.load(fp)

方案2:直接使用uploaded中的二进制数据

既然uploaded['train_qa.txt']已经是文件的二进制内容,你可以跳过open()步骤,直接用pickle.loads()加载:

import pickle
from google.colab import files

uploaded = files.upload()
# 直接从二进制数据加载pickle对象
train_data = pickle.loads(uploaded['train_qa.txt'])

验证小技巧

执行!ls命令可以查看当前工作目录下的文件,确认train_qa.txt存在,这能帮你排除文件未正确上传的情况。

内容的提问来源于stack exchange,提问作者Akash sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:04:07