Mam listę, która wygląda tak:Python Peklowanie/unpickle listy do/z pliku
a = [['a string', [0, 0, 0], [22, 'bee sting']], ['see string',
[0, 2, 0], [22, 'd string']]]
i mam problemy zapisywania i pobierania go.
mogę zapisać go ok używając Marynata:
with open('afile','w') as f:
pickle.dump(a,f)
ale pojawia się następujący błąd, gdy próbuję go załadować:
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'
myślałem, że mogę przekonwertować do numpy tablicy i użyj save
, savez
lub . Jednak otrzymuję następujący błąd:
>>> 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
Zamiast pickle.load ('afile') do pickle.load (open ('afile')) –
Oczywiście! dziękuję - dlaczego nie umieszczasz tego jako odpowiedzi .. – atomh33ls
Nie możesz łatwo przekonwertować tego, co masz na "numpy.array", ponieważ ma nieregularny kształt. Musiałbyś stworzyć dużą regularną tablicę, a następnie wypełnić wszystkie dane za pomocą 'NaN' lub czegoś podobnego ... w zasadzie to, co' pandas' robi dla ciebie. Prawdopodobnie jest to jednak przesada dla twojej małej listy. –