Pickle и Unpickle dict со списком в качестве значения

У меня есть словарь со списком в качестве значения, например:

numlist = {'Person': ['2342342', '15:05']}

Я мариную.

outfile = open{"log.txt", "wb")
pickle.dump(numlist, outfile)

распаковываю.

infile = open("log.txt", "rb")
pickle.load(infile)

Как преобразовать эти двоичные данные обратно в исходный формат? (словарь с переменной «имя» в качестве ключа и список с двумя элементами (переменная «номер» для числа и «время вызова» для времени) в качестве значения)?


person Musaab    schedule 15.09.2011    source источник
comment
Пожалуйста, добавьте эти две строки: x= pickle.load(infile) и print x. Затем включите вывод как часть вашего вопроса.   -  person S.Lott    schedule 15.09.2011
comment
Э-э, распаковав его. В чем проблема?   -  person Cat Plus Plus    schedule 15.09.2011


Ответы (1)


Хорошо, попробуем:

In [22]: import pickle

In [23]: numlist = {'Person': ['2342342', '15:05']}

In [24]: outfile = open("log.txt", "wb")

In [25]: pickle.dump(numlist, outfile)

In [26]: outfile.close()

In [27]: infile = open("log.txt", "rb")

In [28]: pickle.load(infile)
Out[28]: {'Person': ['2342342', '15:05']}

Как видите, я получил именно то, с чего начал (numlist). Единственное, что изменилось по сравнению с вашим кодом, это то, что я закрываю outfile перед его повторным открытием, чтобы убедиться, что буферы очищены.

person NPE    schedule 15.09.2011
comment
Как мне получить содержимое этого в переменных? - person Musaab; 15.09.2011
comment
Я не понимаю вопроса. Вы начали со словарем (numlist), вы получили словарь. Просто сохраните его в переменной: numlist_out = pickle.load(infile). И, кстати, вы не можете распаковать одно и то же дважды и ожидать, что оно сработает; вы должны закрыть и снова открыть файл. - person NPE; 15.09.2011
comment
Я сделал небольшую отладку и понял это. Спасибо еще раз! - person Musaab; 15.09.2011