Python序列化后返回字符串而不是字典?
我现在正在学习Python中的“序列化”(也叫“持久化”),但是我遇到了一个错误,提示我初始化的变量在解序列化时没有我想用的某个属性,这让我很困惑。
我把一个字典(也就是脚本的数据)进行了序列化,然后试图用下面的代码把它解序列化:
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说data_to_load没有items()这个属性,因为data_to_load的类型是'str'(字符串)。在我给出的代码中,data_to_load是第一次被声明的,我原以为它会根据赋给它的值动态改变类型(我认为它应该是一个字典,因为我知道从这个文件里加载的就是字典)。
1 个回答
3
这应该没问题。你发的代码是可以的。你是怎么保存数据的?你是用 pickle.dump
,而不是 pickle.dumps
来处理字符串吗?你的问题几乎肯定出在保存数据的那段代码上。
>>> import cPickle
>>> foo = {4:2}
>>> cPickle.dump(foo, open('foo.pickle', 'wb'))
>>> data_to_load = cPickle.load(open('foo.pickle'))
>>> data_to_load.items()
[(4, 2)]