2010-12-25 23 views
22

Witam Próbuję przy użyciu następny kawałek kodu:Python: zapisywanie obiektów i używanie pikle. Rozszerzenie nazwy pliku

import pickle 
object = Object() 
filehandler = open(filename, 'w') 
pickle.dump(object, filehandler) 

chciałbym wiedzieć, co powinno być rozszerzenie pliku „filename”. Dziękujemy!

+0

filename reprezentuje dowolną wartość (string), można wybrać rozszerzenie. Na przykład. "mypickle.pickle" – gimel

+10

to nie ma znaczenia. Możesz wybrać dowolną nazwę pliku lub rozszerzenie. Ale ogólnie .pkl lub .pickle służy do czytelności. – easysid

Odpowiedz

8

Zależy od tego, co chcesz zrobić z plikiem.

filename powinny wystarczyć.

I nie używaj object jako identyfikatora. Cieni wbudowany object.

+1

Tak, wiem, że "obiekt" jest tą natychmiastową. – Peterstone

+9

@Peterstone: Python ma wbudowany * typ * o nazwie 'object'. Masz zmienną o tej samej nazwie, która ją ukrywa i wszelkie odniesienia do 'obiektu' będą miały dostęp do czegoś nieoczekiwanego. – martineau

+0

Brakujące rozszerzenie może wyglądać nieprofesjonalnie dla użytkowników systemu Windows –

11

Jeszcze jedna rzecz, należy zwrócić uwagę na:

należy stosować tryb binarny z obsługą plików wytrawiania. Więc "w" powinno być "wb".

+2

To nie jest odpowiedź. –

25

Można użyć dowolnego filename, ale jako FYI powszechne jest używanie ".p" (z oczywistych powodów).

pickle.dump(favorite_color, open("save.p", "wb")) 

Czytaj: UsingPickle

+0

Wydaje się, że byłoby bardzo użyteczne zapisanie typu obiektu również w nazwie pliku, np. 'MPLplots.Figure.p' lub' Data.list.p' lub 'Data.nparray.p' – Demis

+0

Czy jest to obowiązkowe czy konwencja? – john

+0

Konwencja @john - inne odpowiedzi wspominają .pkl lub .pickle, więc domyślam się, że to nie jest tak silna konwencja. –