How to get all pickled data
pickle, python
Solution
You could add all your objects to a list and then do whatever you prefer with them.
with open(pickle_file) as f:
unpickled = []
while True:
try:
unpickled.append(pickle.load(f))
except EOFError:
break
Problem
I have a pickled file with some data structures. I don't know the exact amount and types of elements. How to get all objects into a dict or a list? The question is how to iterate through the file not knowing the number of entries? Do all objects are stored as strings? EDIT: I'm using such code to save data in file: ``` import pickle def _save(_file, *_obj): with open(_file, 'w') as f: for obj in _obj: pickle.dump(obj, f) ``` the only solution I see right now is to store the number of objects as a first entry. read it, then read everything else. I can easily unpickle data that way: ``` 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 ``` this gives me what I want... but I need to do it in a loop