【问题标题】:pickle data was truncated泡菜数据被截断
【发布时间】:2020-05-10 20:34:17
【问题描述】:

我创建了一个语料库文件,然后存储在一个 pickle 文件中。 我的消息文件是不同新闻文章数据框的集合。

from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
import re
ps = PorterStemmer()
corpus = []
for i in range(0, len(messages)):
    review = re.sub('[^a-zA-Z]', ' ', messages['text'][i])
    review = review.lower()
    review = review.split()

    review = [ps.stem(word) for word in review if not word in stopwords.words('english')]
    review = ' '.join(review)
    #print(i)
    corpus.append(review)

import pickle
with open('corpus.pkl', 'wb') as f:
   pickle.dump(corpus, f)

我在笔记本电脑(jupyter notebook)和谷歌 colab 上运行的代码相同。

corpus.pkl => 谷歌colab,下载代码如下:

from google.colab import files
files.download('corpus.pkl')

corpus1.pkl => 从 jupyter notebook 代码中保存。

现在当我运行这段代码时:

import pickle
with open('corpus.pkl', 'rb') as f:   # google colab
    corpus = pickle.load(f)

我收到以下错误:

UnpicklingError: pickle data was truncated

但这很好用:

import pickle
with open('corpus1.pkl', 'rb') as f:  # jupyter notebook saved
    corpus = pickle.load(f)

两者之间的唯一区别是corpus1.pkl 是通过 Jupyter notebook 运行和保存(在本地),而corpus.pkl 是保存在 google collab 上并下载。

谁能告诉我为什么会这样?

供参考..

corpus.pkl  => 36 MB
corpus1.pkl => 50.5 MB

【问题讨论】:

  • 你应该展示你是如何生成文件的,因为看起来它们是用相同的代码读取的。
  • 这里有多个故障点:[colab] -> [从 colab 下载] -> [您的机器之前的网络中的某些东西]。我猜你尝试再次下载它,并在下载前检查 colab 中的文件大小。
  • 我使用相同的代码来创建这两个文件,一个在我的笔记本电脑(jupyter notebook)中,另一个在google callab中。
  • @Iñigo 的建议奏效了。我还在 Google Collab 中上传了 pickle 文件,但遇到了与您相同的错误。我刚刚删除了上传的文件并重新上传,一切正常。

标签: python data-science pickle data-science-experience


【解决方案1】:

我只会使用本地机器创建的pickle文件,它可以正常工作

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多