据我所知,我继承了在pickle文件中存储的数据集,该数据集是在python 3中创建的。
我正在尝试使用以下代码在python中打开pickle文件:
f = open('file.pkl', 'rb')
cl = pickle.loads(f)
这样做时,出现以下错误:
TypeError: a bytes-like object is required, not '_io.BufferedReader'
当我尝试仅使用'r'
参数读取该错误时,就会引发类似的错误。
我可以看到pickel文件是使用joblib创建的,这是我以前从未使用过的。我找不到任何文档说明是否需要以其他方式打开joblib pickel文件。
以下是创建泡菜文件的代码:
joblib.dump(list_of_dataframes, 'file.pkl', compress=3)
非常感谢您的帮助!
编辑
当我尝试直接从joblib
加载时,此按钮也不会打开:
with open(pickle_file) as f:
data = joblib.load(f)
哪个抛出以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
答案 0 :(得分:0)
您使用了错误的加载功能。
您正在呼叫pickle.loads()
,但是您应该使用pickle.load()
。
.loads()
处理字符串,.load()
处理文件对象。
答案 1 :(得分:0)
我找到了答案,这不是我期望的! (感谢@JohnGordon早期的帮助。)我的文件已损坏,因为它太大了,无法从GitHub直接提取。为了解决这个问题,我使用了Git LFS并做了git lfs pull
而不是git pull
。现在,解开码的工作没有错误。