python - 处理 cPickle 不可用

标签 python pickle

我有一个 python 程序,我想从 cmd 提示符运行,但每次我尝试时,它总是给我一个错误“NameError: name cPickle is not defined”。

我使用的是 python 2.7,这是我安装的唯一版本。 我尝试修改代码并使其导入 pickle 而不是导入 cPickle,但它仍然不起作用。

import pickle
#import cPickle
import gzip

# Third-party libraries
import numpy as np

def load_data():

    f = gzip.open('../data/mnist.pkl.gz', 'rb')
    training_data, validation_data, test_data = cPickle.load(f)
    f.close()
    return (training_data, validation_data, test_data)

def load_data_wrapper():
    tr_d, va_d, te_d = load_data()
    training_inputs = [np.reshape(x, (784, 1)) for x in tr_d[0]]
    training_results = [vectorized_result(y) for y in tr_d[1]]
    training_data = zip(training_inputs, training_results)
    validation_inputs = [np.reshape(x, (784, 1)) for x in va_d[0]]
    validation_data = zip(validation_inputs, va_d[1])
    test_inputs = [np.reshape(x, (784, 1)) for x in te_d[0]]
    test_data = zip(test_inputs, te_d[1])
    return (training_data, validation_data, test_data)

def vectorized_result(j):
    e = np.zeros((10, 1))
    e[j] = 1.0
    return e

我改变了那行

training_data, validation_data, test_data = cPickle.load(f)

training_data, validation_data, test_data = pickle.load(f)

这没有用,出于某种原因我无法在线找到要安装的 cPickle 包。谁能帮我找出解决方案!

最佳答案

处理 cPickle 是否可用的不确定性的典型方法是尝试加载它,如果您的 Python 解释器不提供,则回退到 pickle这个模块:

try:
    import cPickle as pickle
except ImportError:
    import pickle

...之后您可以在任何一种情况下无条件地使用 pickle 名称。

关于python - 处理 cPickle 不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35096875/

相关文章:

python - 用于从 Google 云存储呈现静态图像的 Django 设置

python - 如何在 Python 中 pickle 复杂的枚举值

python - 从 pickle 对象中安全地提取部分数据

python - 为什么我的 python 程序在使用调试器运行时不会抛出错误?

python - 将内存中的变量保存到文件中

python - pickle 内部类

python - 在 Sqlalchemy 中进行枚举的最佳方法?

python - 如何更改默认的python路径?

Python-在保持前导零的同时将字符串转换为整数

python - 如果新文件不存在则写入新文件,如果存在则追加到文件