python - 尝试解开压缩的 pickle 文件会导致 OSError: Invalid data stream
问题描述
我有一个compressed pickle
泡菜文件。在几次尝试中,我试图解开这个文件但没有成功。这里是根据以下资源解压压缩的 pickle 文件的代码here、here和here。
首先,我尝试使用该pickle
模块。
import bz2
import pickle
data = bz2.BZ2File('test.gzip', 'rb')
data = pickle.load(data)
然后,我也尝试使用该cPickle
模块。
import bz2
import _pickle as cPickle
data = bz2.BZ2File('test.gzip', 'rb')
data = cPickle.load(data)
在这两次尝试中,我都得到了一个OSError: Invalid data stream
函数load()
。这是一个痕迹。
回溯(最近一次通话最后): 文件“”,第 1 行,在 文件“C:\Users\jane\Anaconda3\envs\py36\lib\bz2.py”,第 172 行,偷看 返回 self._buffer.peek(n) 文件“C:\Users\jane\Anaconda3\envs\py36\lib\_compression.py”,第 68 行,读入 数据 = self.read(len(byte_view)) 文件“C:\Users\jane\Anaconda3\envs\py36\lib\_compression.py”,第 103 行,已读取 数据 = self._decompressor.decompress(原始块,大小) OSError:无效的数据流
我认为这可能与我的 Python 环境有关,但是在为 Conda 中的 Python 3.6、3.7 和 3.8 创建 Python 环境之后,我已经测试了这些代码片段。我仍然得到同样的错误。我也搬到了 Ubuntu (WSL) 并在 Python 3.8 conda 环境中尝试了它,并得到了同样的错误。
关于发生了什么的任何想法?
解决方案
扩展.gzip
应该给了我一个线索。
import gzip
import pickle
with gzip.GzipFile('test.gzip', 'rb') as f:
df = pickle.load(f)
我看到的所有示例都使用bz2
了gzip
.
推荐阅读
- python - 您可以使用 Python 将文件移动到 gcloud VM 实例吗
- tooltip - 散景工具提示不显示
- c - 在作为值传递的结构地址上设置 NULL
- python - 文件夹中的图像文件按字母顺序排序。但是附加列表不是按这个顺序
- java - 在Java中创建对象的ID
- flutter - Dart 中的字符串文字类型模拟
- angular - Primeng Carousel 没有得到正确的样式
- vba - 在 VBA 中引用查询以发送多封电子邮件
- html - why my page is not showing background color when i have added the css
- node.js - 在socket.io“connection”中使用express“app.get”中定义的变量