Extensión de archivo preferida (o más común) para un pickle de Python

2 minutos de lectura

avatar de usuario
raymond hettinger

A veces, he visto .pickle, .pck, .pcly .db para archivos que contienen encurtidos de Python, pero no estoy seguro de cuál es la mejor práctica o la más común. Sé que las últimas tres extensiones también se usan para otras cosas.

La pregunta relacionada es: ¿Qué tipo de MIME se prefiere para enviar pickles entre sistemas que usan una API REST?

  • Lo divertido es que estoy seguro de que alguna vez usé .pkl.

    – idjaw

    5 de noviembre de 2016 a las 0:21

  • Por alguna razón, esto no está en el documento de Python 3, sino en el documento de Python 2 y especificando pkl -> docs.python.org/2/library/pickle.html#ejemplo

    – idjaw

    5 de noviembre de 2016 a las 0:22

  • Evite los encurtidos siempre que sea posible. Hay una razón por la que los documentos advierten contra el uso de pickle: no es seguro, nunca ha sido seguro y nunca lo será. Utilice el módulo json en su lugar.

    – Rey Radical

    5 de noviembre de 2016 a las 1:32


  • @KingRadical, ¿podría dar algunas alternativas?

    –Rafa Nogales

    14 de junio de 2020 a las 16:23

  • @RafaNogales msgpack parece una buena alternativa binaria pypi.org/project/u-msgpack-python

    – giuliano-oliveira

    26 de septiembre de 2020 a las 12:36

avatar de usuario
Teórico

Pitón 2

Desde el Documentación de Python 2mientras serializa (es decir, escribe en un archivo pickle), use:

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

yo elegiría .pkl como la extensión cuando se usa Python 2.

Pitón 3

El ejemplo en el Documentación de Python 3 ahora usa .pickle como la extensión de archivo para la serialización:

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

El tipo MIME preferido para enviar pepinillos del comentario de martineau a continuación:

aplicación/flujo de octetos

Ver ¿Cuál es el “tipo de contenido” de HTTP que se debe usar para un blob de bytes?

  • text/plain es posible que no funcione según el protocolo pickle que se utilice; la versión 0 del protocolo es la única que es ASCII.

    – martineau

    5 de noviembre de 2016 a las 1:15

  • Dicho esto, creo application/octet-stream sería mejor independientemente del protocolo — ver pregunta ¿Cuál es el “tipo de contenido” de HTTP que se debe usar para un blob de bytes?

    – martineau

    5 de noviembre de 2016 a las 1:28


¿Ha sido útil esta solución?