【发布时间】:2011-02-28 14:58:58
【问题描述】:
我目前正在学习 Python 中的酸洗,但我对一个错误感到困惑,我抱怨我正在初始化的 unpickled 变量没有我想要使用的特定属性。
我正在挑选脚本数据的字典,然后尝试使用以下代码将其 unpickle.load 返回:
def loadData():
global script_data_filepath
with open(script_data_filepath) as script_data_file:
data_to_load = pickle.load(script_data_file)
for data_item in data_to_load.items():
print(data_item[0])
print(data_item[1])
问题在于 Python 说 items() 不是 data_to_load 的属性,因为 data_to_load 的类型是“str”。在我给出的代码中,这是第一次声明 data_to_load ,我强调它会动态地采用分配给它的任何类型(它应该是一个字典,因为我知道将从这个文件中加载它)。
【问题讨论】:
-
由于问题不在您粘贴的代码中(如果此代码出错,那么腌制的是字符串),您可以将代码添加到你腌制数据?您是否尝试过对字符串进行腌制和解封作为测试?还要腌制到
protocol=0,并检查是否腌制了正确的对象。 -
随机建议:如果要存储数据,请使用搁置或数据库(即 sqlite)。 Pickle 仅适用于最琐碎的情况。
-
有趣 - 我从来没有遇到过 Pickle 的问题。而且你知道 shelve 只是泡菜的包装,对吧?
-
嘿伙计们 - 对不起,原来我在做一些非常愚蠢的事情。我还没有使用字典使用我的新保存机制进行保存(我仍然只是保存一个字符串)。现在效果很好。谢谢您的帮助。 :)
标签: python dictionary pickle