Phần mở rộng tệp được ưu tiên (hoặc phổ biến nhất) cho một món ăn Python


81

Đôi khi, tôi đã nhìn thấy .pickle, .pck, .pcl, và .dbcho các tập tin có chứa dưa chua Python, nhưng tôi không chắc chắn những gì là phổ biến nhất hoặc thực hành tốt nhất. Tôi biết rằng ba phần mở rộng sau cũng được sử dụng cho những việc khác.

Câu hỏi liên quan là: Loại MIME nào được ưu tiên để gửi dưa chua giữa các hệ thống bằng API REST?


3
Điều buồn cười là tôi chắc chắn rằng tôi đã từng sử dụng .pkl.
idjaw

2
Đối với một số lý do này không có trong Python 3 doc, nhưng trong Python 2 doc và quy định cụ thể pkl-> docs.python.org/2/library/pickle.html#example
idjaw

4
Tránh dưa muối nếu có thể. Có một lý do mà các tài liệu cảnh báo không nên sử dụng dưa chua - nó không an toàn, không bao giờ an toàn và sẽ không bao giờ an toàn. Sử dụng mô-đun json thay thế.
KingRadical

@KingRadical bạn có thể đưa ra một số lựa chọn thay thế không?
Rafa Nogales

1
@RafaNogales msgpack có vẻ là một giải pháp thay thế nhị phân tốt pypi.org/project/u-msgpack-python
giuliano-oliveira

Câu trả lời:


90

Python 2

Từ tài liệu Python 2 , trong khi tuần tự hóa (tức là ghi vào tệp pickle), hãy sử dụng:

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

Tôi sẽ chọn .pkllàm phần mở rộng khi sử dụng Python 2.

Python 3

Ví dụ trong tài liệu Python 3 hiện sử dụng .picklelàm phần mở rộng tệp để tuần tự hóa:

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

Loại MIME được ưu tiên để gửi dưa chua từ bình luận của martineau bên dưới:

ứng dụng / octet-stream

Xem HTTP "content-type" để sử dụng cho một khối byte là gì?


text/plaincó thể không hoạt động tùy thuộc vào giao thức pickle đang được sử dụng - giao thức phiên bản 0 là giao thức duy nhất là ASCII.
martineau

2
Điều đó nói rằng, tôi nghĩ application/octet-streamsẽ tốt hơn bất kể giao thức nào - hãy xem câu hỏi "Loại nội dung" HTTP để sử dụng cho một khối byte là gì?
martineau
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.