python - 如何获取所有 pickle 数据

标签 python pickle

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

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

这给了我想要的...但我需要循环执行

最佳答案

您可以将所有对象添加到列表中,然后对它们进行任何您喜欢的操作。

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

关于python - 如何获取所有 pickle 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15809369/

相关文章:

python - 如何为列表中的每个变量分配一个数字,然后将相同变量的数字相加?

Python pickle 不会打印出诸如 'â,é,č,ć' 之类的字符

python - Django 文件 uploader 抛出错误 "cannot pickle ' _io.BufferedRandom' object"同时使用 celery 上传更多感谢 2.5mb 的图像

python - celery update_state() 不工作

python - ValueError : Error when checking target: expected activation_9 to have shape (74, 6) 但得到形状为 (75, 6) 的数组

python - EOFError : Ran out of input, 使用 torch.load()

python - 无法pickle Scikit学习NearestNeighbor分类器 - 无法pickle实例方法对象

python - 为什么 Python 在不应该的时候给我 "an integer is required"?

python - 如何将 4d RGB 图像数据转换为 LogisticRegression 的 2d 数组

python - 如何在 django 序列化器中为同一模型发送 "group by"