Python-打开使用作业库

时间:2019-02-21 16:00:47

标签: python compression pickle joblib

据我所知,我继承了在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

2 个答案:

答案 0 :(得分:0)

您使用了错误的加载功能。

您正在呼叫pickle.loads(),但是您应该使用pickle.load()

.loads()处理字符串,.load()处理文件对象。

答案 1 :(得分:0)

我找到了答案,这不是我期望的! (感谢@JohnGordon早期的帮助。)我的文件已损坏,因为它太大了,无法从GitHub直接提取。为了解决这个问题,我使用了Git LFS并做了git lfs pull而不是git pull。现在,解开码的工作没有错误。