Am 16.05.2010 09:10, schrieb Yutao Deng:
Hi all:
I'm trying to learn to use Python wrote a applet to record every day doing.
and i use the pickle
pickle.dump something to file no problem i think.
but pickle.load whith a problem. can not load all dict do my way that what i pickle.dump().

My code:
####
import cPickle as pickle
pickle_file = open("data2","rb")
i = pickle.load(pickle_file)
print i
i = pickle.load(pickle_file)
print i
i = pickle.load(pickle_file)
print i
i = pickle.load(pickle_file)
print i
i = pickle.load(pickle_file)
print i
####
console show :
{'2010-5-23': ['1242', 'first']}
{'2010-5-24': ['1232', 'third']}
{'2010-5-25': ['211', 'second']}
{'2010-3-22': ['3211', 'fourrrr']}
{'2050-3-2': ['3990', '322']}

This is i want but that's silly. if the dict too much, then i have not ideas.

the other way from http://mail.python.org/pipermail/tutor/2005-July/039859.html

####
import cPickle as pickle
pickle_file = open("data2","rb")

number_of_pickles = pickle.load(pickle_file)
for n in range(number_of_pickles):
    p = pickle.load(pickle_file)
    print p
####
this way didnt work for me.

console show:
Traceback (most recent call last):
    number_of_pickles = pickle.load(pickle_file)
cPickle.UnpicklingError: invalid load key, '
'.
how do i define a range for pickle.load a file . i mean that how can i know how many dict in the data2.


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
If you want to unpickle a file which contains an unknown number of pickled objects, this should work. You'll get a list containing all the objects.
#############################################################
import cPickle
import pprint

test_data_1 = {"2010-12-13": ["1324", "first"]}
test_data_2 = {"2010-12-14": ["234", "first_and_a_half"]}
test_data_3 = {"2010-12-15": ["132224", "second"]}

for data in (test_data_1, test_data_2, test_data_3):
    with open("data2.pickle", "ab") as file_stream:
        cPickle.dump(data, file_stream, 2)

with open("data2.pickle", "rb") as file_stream:
    pickled_objects = []
    while True:
        try:
            pickled_objects.append(cPickle.load(file_stream))
        except EOFError:
            break

print "Number of pickled objects is %s." % len(pickled_objects)
pprint.pprint(pickled_objects)
############################################################Cheers,

Jan
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to