使用Python“ cPickle.load”加载C ++编写的二进制文件时,出现EOFError

时间:2019-05-02 23:14:37

标签: python c++ pickle binaryfiles

我使用C ++ fwrite编写了一个二进制文件,并尝试使用cPickle.load加载该文件。但是我遇到了错误

 data = pickle.load(f)
 EOFError

我的C ++写入文件代码为

FILE* bp = fopen("res.bin", "wb");
for(int i = 0; i < 512 ; i++){
    float tmp = i;
    fwrite(&tmp, sizeof(float), 1, bp);
}
fclose (bp);

我的Python加载代码为

 import cPickle as pickle
 f =  open("res.bin", "rb")
 data = pickle.load(f)
 f.close()

请帮助解决此问题。谢谢!

1 个答案:

答案 0 :(得分:0)

由numpy解决... pickle.load似乎无法用于加载c ​​++二进制文件。所以我用numpy.fromfile

data =  np.fromfile("res.bin", dtype='float32')