Переважне (або найпоширеніше) розширення файлу для засолу Python


83

Іноді я бачив .pickle, .pck, .pclі .dbдля файлів, що містять розсоли Python, але я НЕ впевнений , що є найбільш поширеною і передовою практикою. Я знаю, що останні три розширення також використовуються для інших речей.

Пов'язане запитання: Який тип MIME є кращим для надсилання солінь між системами, що використовують REST API?


3
Смішно те, що я впевнений, що колись давно використовував .pkl.
idjaw

2
З якоїсь причини це не в документі Python 3, а в документі Python 2 та вказівці pkl-> docs.python.org/2/library/pickle.html#example
idjaw

4
Уникайте солінь, де це можливо. Є причина, за якою документи застерігають від використання соління - це не безпечно, воно ніколи не було безпечним і ніколи не буде безпечним. Замість цього використовуйте модуль json.
KingRadical

@KingRadical, не могли б ви дати кілька альтернатив?
Рафа Ногалес,

1
@RafaNogales msgpack здається гарною бінарною альтернативою pypi.org/project/u-msgpack-python
giuliano-oliveira

Відповіді:


96

Python 2

З документації Python 2 під час серіалізації (тобто запису у файл засолу) використовуйте:

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

Я б обрав .pklрозширення при використанні Python 2.

Python 3

Приклад у документації Python 3 тепер використовує .pickleяк розширення файлу для серіалізації:

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

Тип MIME, бажаний для надсилання солінь з коментаря Мартіно нижче:

додаток / октет-потік

Див. Що таке "тип вмісту" HTTP для використання для великої кількості байтів?


text/plainможе не працювати залежно від використовуваного протоколу розсолу - версія 0 є єдиною, яка є ASCII.
мартіно

2
Тим не менш, я думаю, application/octet-streamбуло б краще, незалежно від протоколу - див. Запитання Що таке “тип вмісту” HTTP, який слід використовувати для крапки байтів?
мартіно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.