Python cPickle底流误差

Python cPickle底流误差,python,file-io,pickle,Python,File Io,Pickle,我正在尝试使用cPickle加载一个文件,如下所示 import cPickle cPickle.load(open('test', 'rb')) 但是我得到这个错误, --------------------------------------------------------------------------- UnpicklingError Traceback (most recent call last) <ipython

我正在尝试使用cPickle加载一个文件,如下所示

import cPickle

cPickle.load(open('test', 'rb'))
但是我得到这个错误,

---------------------------------------------------------------------------
UnpicklingError                           Traceback (most recent call last)
<ipython-input-527-1b7653ff1917> in <module>()
----> 1 cPickle.load(open('test', 'rb'))

UnpicklingError: unpickling stack underflow
我为什么要得到这个


PS:cPickle没有和我一起处理任何文件,即使是新创建的只包含两个单词的文件。我正在使用Ubuntu12.04和Python 64位

试试这个,它为我修复了错误:

import pickle
import pandas as pd


# read in csv file to pandas dataframe and save as pickle file
training_data = pd.read_csv('train.csv')
pickle_out = open('train.pkl', 'wb')
pickle.dump(training_data, pickle_out)
pickle_out.close() 


# open pickle file
file = 'train.pkl'
with open(file, 'rb') as f:
    training_data = pickle.load(f)
        

看起来您可能缺少一些前导或尾随字节。你是怎么制作这个文件的?你关上它之前冲水了吗?它小到可以在这里发布吗?@dan.lecocq,我已经更新了这个问题,基本上,它不处理任何文件,文件内容类似于“测试”,我通过右键单击文件创建来创建我的文件。您可以发布以下输出:
cPickle.loads(cPickle.dumps(“test”)
?是的,
在[544]:cPickle.loads(cPickle.dumps(“test”))Out[544]:“test”
Ok。至少你的
cPickle
模块是相对正常的:-)。当你说你的文件内容类似于“test test”时,您是手工制作此文件的吗?它们必须由
cPickle
制作,才能由
cPickle
读取。除此之外,我会尝试将其写入一个文件,并验证它是否匹配
cPickle.dumps('test')
。如果你跳上SO chat,我们可以进行更多的交互式调试。
import pickle
import pandas as pd


# read in csv file to pandas dataframe and save as pickle file
training_data = pd.read_csv('train.csv')
pickle_out = open('train.pkl', 'wb')
pickle.dump(training_data, pickle_out)
pickle_out.close() 


# open pickle file
file = 'train.pkl'
with open(file, 'rb') as f:
    training_data = pickle.load(f)