Al leer y escribir archivos pickle, noté que algunos fragmentos usan .p , otros .pkl y algunos el .pickle completo. ¿Hay una forma más pitónica de hacer esto?
Mi opinión actual es que no hay una respuesta correcta y que cualquiera de ellas será suficiente. De hecho, escribir un nombre de archivo como awesome.pkl o awesome.sauce no supondrá una diferencia al ejecutar pickle.load(open(filename, "rb")) . Es decir, la extensión del archivo es solo una convención que en realidad no afecta los datos subyacentes. ¿Está bien?
Bonificación: ¿Qué pasa si guardo una imagen PNG como myimage.jpg ? ¿Qué caos crearía eso?
La extensión no hace ninguna diferencia porque " The Pickle Protocol " se ejecuta siempre.
Es decir, cada vez que se ejecuta pickle.dumps o pickle.loads, los objetos se serializan/no serializan de acuerdo con el protocolo pickle.
(El protocolo pickle es un formato de serialización )
El protocolo pickle es específico de Python (y hay varias versiones ). En realidad, solo está diseñado para que un usuario reutilice los datos por sí mismo -> si envió el archivo en escabeche a otra persona que tenía una versión diferente de pickle/Python, es posible que el archivo no se cargue correctamente y probablemente no pueda hacer nada. útil con ese archivo en escabeche en otro lenguaje como Java.
Por lo tanto, use las extensiones que desee porque el pickler las ignorará .
JSON es otra forma más popular de serializar datos, también puede ser utilizado por otros lenguajes a diferencia de pickle; sin embargo, no se adapta directamente a python y, por lo tanto, no comprende ciertos tipos de variables:/
fuente si quieres leer más
EDITAR: si bien podría usar cualquier nombre, ¿cuál debería usar?
1 Como lo mencionó @Mike Williamson, .pickle se usa en los documentos de pickle
2 El módulo json de la biblioteca estándar de python carga archivos con la extensión .json . Entonces seguiría que el módulo pickle cargaría una extensión .pickle .
3 El uso de .pickle también minimizaría cualquier posibilidad de uso accidental por parte de otros programas.
Las extensiones .p son utilizadas por algunos otros programas, sobre todo MATLAB como sufijo para archivos binarios en tiempo de ejecución [fuentes: uno , dos ]. Cierto riesgo de conflicto
.pkl es utilizado por algunas ventanas oscuras "Archivo de lista de empaque del asistente de migración" [ fuente ]. Increíblemente bajo riesgo de conflicto.
.pickle solo se usa para el decapado de python [ fuente ]. Sin riesgo de conflicto.