У меня есть список, который выглядит следующим образом:Python рассол/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
Вместо pickle.load ('AFile') делать pickle.load (открытый ('AFile')) –
конечно! спасибо. Почему бы вам не поместить это как ответ. – atomh33ls
Вы не можете легко преобразовать то, что у вас есть, в 'numpy.array', поскольку оно имеет неправильную форму. Вам нужно будет создать большой регулярный массив, а затем заполнить все данные с помощью «NaN» или что-то в этом роде ... по существу, что «pandas» делает для вас. Однако это, вероятно, слишком велико для вашего небольшого списка. –