Python pickle / unpickle список в / из файла

У меня есть список, который выглядит так:

a = [['a string', [0, 0, 0], [22, 'bee sting']], ['see string', [0, 2, 0], [22, 'd string']]] 

и у меня проблемы с сохранением и извлечением.

Я могу сохранить его в порядке, используя рассол:

 with open('afile','w') as f: pickle.dump(a,f) 

но при попытке загрузить его выполните следующую ошибку:

 pickle.load('afile') Traceback (most recent call last): File "<pyshell#116>", line 1, in <module> pickle.load('afile') File "C:\Python27\lib\pickle.py", line 1378, in load return Unpickler(file).load() File "C:\Python27\lib\pickle.py", line 841, in __init__ self.readline = file.readline AttributeError: 'str' object has no attribute 'readline' 

Я думал, что я могу преобразовать в массив numpy и использовать save , savez или savetxt . Однако я получаю следующую ошибку:

 >>> np.array([a]) Traceback (most recent call last): File "<pyshell#122>", line 1, in <module> np.array([a]) ValueError: cannot set an array element with a sequence 

2 Solutions collect form web for “Python pickle / unpickle список в / из файла”

Решил сделать это как ответ. Метод pickle.load предполагает получение файла, подобного объекту, но вместо этого вы предоставляете строку и, следовательно, исключение. Поэтому вместо:

 pickle.load('afile') 

ты должен сделать:

 pickle.load(open('afile', 'rb')) 

Чтобы добавить к ответу @ Rapolas K:

Я обнаружил, что у меня были проблемы с закрытием файла, поэтому я использовал этот метод:

 with open('afile','rb') as f: pickle.load(f) 
  • В чем заключается основное различие между pickle и yaml в Python?
  • Почему я не могу забрать трассировку ошибки в Python?
  • Pandas скомпилирован из источника: поведение по умолчанию по умолчанию изменено
  • Выравнивание типа расширения Python, определенного как C-структура с элементами PyObject *
  • Pickle не будет работать с tkinter
  • Как раскрыть объект ssl.SSLContext
  • Как разместить мой набор данных в файле .pkl в точном формате и структуре данных, используемой в «mnist.pkl.gz»?
  • python 2.6 cPickle.load приводит к EOFError
  •  
    Interesting Posts for Van-Lav

    Как отправить не-ASCII-символы с помощью httplib, когда content-type – "application / xml"

    Pandon Pandas – переупорядочивание столбцов в фрейме данных на основе имени столбца

    Получить список имен столбцов из таблицы базы данных Firebird

    Импорт майави из python создает всплывающее окно с черным фоном в пользовательском интерфейсе (Mavericks / Canopy)

    Python усекает длинную строку

    Вход в форму сайта с использованием Python urllib2

    В python, как эффективно найти самый большой последовательный набор чисел в списке, которые не обязательно смежны?

    Глава Первые шаблоны проектирования – шаблон стратегии – Python

    Нужно ли включать __init__ в качестве первой функции каждый раз в классе в Python?

    Операции с цифрами выглядят медленными

    Даты до дюраций в Пандах

    OpenCV не будет захватывать MacBook Pro iSight

    Автоматическое обнаружение доступности дисплея с помощью matplotlib

    Почему рабочий день Python () отличается от tm_wday в C?

    Что означают разные значения аргумента вида в scipy.interpolate.interp1d?

    Python - лучший язык программирования в мире.