如何获取所有腌制数据

时间:2013-04-04 11:04:37

标签: python pickle

我有一个带有一些数据结构的pickle文件。我不知道元素的确切数量和类型。如何将所有对象放入字典或列表中? 问题是如何在不知道条目数的情况下迭代文件?
是否所有对象都存储为字符串?
编辑:我正在使用此类代码将数据保存在文件中:

import pickle

def _save(_file, *_obj):
    with open(_file, 'w') as f:
        for obj in _obj:
            pickle.dump(obj, f)

我现在看到的唯一解决方案是将对象数量存储为第一个条目。阅读它,然后阅读其他所有内容。

我可以轻松地以这种方式取消数据:

list_data = [1, 2, 3, 4]
dict_data = {1:'a', 2:'b'}
tuple_data = (1, 2, 3)

_save('my_pickle.pckl', list_data, dict_data, tuple_data)
with open('my_pickle.pckl', 'r') as f:
    item1 = pickle.load(f)
    print item1
    item2 = pickle.load(f)
    print item2
    item3 = pickle.load(f)
    print item3

这给了我想要的东西......但我需要在循环中完成

1 个答案:

答案 0 :(得分:4)

您可以将所有对象添加到列表中,然后随意执行任何操作。

with open(pickle_file) as f:
    unpickled = []
    while True:
        try:
            unpickled.append(pickle.load(f))
        except EOFError:
            break