Preferowane (lub najbardziej popularne) rozszerzenie pliku dla Pythona


85

Czasami widziałem .pickle, .pck, .pcl, i .dbdla plików, które zawierają ogórki Python, ale jestem pewien, co jest najczęstszym i najlepszych praktyk. Wiem, że ostatnie trzy rozszerzenia są również używane do innych rzeczy.

Powiązane pytanie brzmi: Jaki typ MIME jest preferowany do wysyłania pikli między systemami za pomocą REST API?


4
Zabawne jest to, że na pewno kiedyś użyłem .pkl.
idjaw

2
Z jakiegoś powodu nie ma tego w dokumencie Python 3, ale w dokumencie Python 2 i określono pkl-> docs.python.org/2/library/pickle.html#example
idjaw

4
O ile to możliwe, unikaj marynaty. Jest powód, dla którego lekarze ostrzegają przed używaniem marynaty - nie jest to bezpieczne, nigdy nie było bezpieczne i nigdy nie będzie bezpieczne. Zamiast tego użyj modułu JSON.
KingRadical

@KingRadical czy mógłbyś podać jakieś alternatywy?
Rafa Nogales,

1
@RafaNogales msgpack wydaje się dobrą alternatywą binarną pypi.org/project/u-msgpack-python
giuliano-oliveira

Odpowiedzi:


98

Python 2

Z dokumentacji Pythona 2 podczas serializacji (czyli zapisu do pliku pikle) użyj:

output = open('data.pkl', 'wb')

Wybrałbym .pkljako rozszerzenie podczas korzystania z Pythona 2.

Python 3

Przykład w dokumentacji Pythona 3 używa teraz .picklejako rozszerzenia pliku do serializacji:

with open('data.pickle', 'wb') as f:
    pickle.dump(...)

Typ MIME preferowany do wysyłania pikli z komentarza martineau poniżej:

aplikacja / strumień oktetu

Zobacz Jaki jest „typ zawartości” HTTP, który ma być używany dla obiektu blob bajtów?


text/plainmoże nie działać w zależności od używanego protokołu pikle - wersja protokołu 0 jest jedynym, który jest ASCII.
martineau

2
To powiedziawszy, myślę, że application/octet-streambyłoby lepiej niezależnie od protokołu - zobacz pytanie Jaki jest „typ zawartości” HTTP, który ma być używany dla blobu bajtów?
martineau
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.