Lo que es más importante, a menos que necesite específicamente un rendimiento o una alta confiabilidad, haga lo que sea que su código sea más simple/fácil de escribir.
Si los datos está muy estructurado (SQL y usted sabe o están dispuestos a aprender) a continuación, utilizando una base de datos como sqlite3
podría ser apropiada. (Debe ignorar el comentario sobre el tamaño de la base de datos y la RAM: hay ocasiones en que las bases de datos son apropiadas incluso para conjuntos de datos muy pequeños, debido a la estructura de los datos)
Si los datos son relativamente simples y no necesita la confiabilidad que una base de datos (normalmente) tiene para luego almacenarla en uno de los tipos de datos incorporados mientras el programa se está ejecutando, probablemente sea correcto.
Si desea que los datos almacenados en el disco sean legibles (y editables, con un poco de esfuerzo), entonces un formato como JSON (hay un módulo json
integrado) es agradable, ya que los objetos básicos de Python se serializan sin ningún esfuerzo. Si los datos no son tan simples, entonces YAML es esencialmente una versión extendida de JSON (PyYAML es muy buena).Del mismo modo, puede usar archivos CSV (los módulos csv
), aunque esto no es tan bueno como JSON o YAML, o simplemente un formato de texto personalizado (pero esto implica un gran esfuerzo para lograr el manejo de errores y así sucesivamente) .
Por último, si los datos contienen objetos más avanzados (por ejemplo, diccionarios recursivos, o tipos de datos personalizados complicados) a continuación, utilizando una de las técnicas de serialización binarios incorporados (pickle
, shelve
etc.) podría ser apropiado, sin embargo, YAML puede manejar muchas de estas cosas (incluidas las estructuras de datos recursivas).
Algunos puntos generales:
- formatos de texto plano son agradables, ya que permiten a los valores a ser ajustados fácilmente y depuración/pruebas es fácil
- formatos binarios son agradables, ya que significa que los valores no se ser ajustado sin un poco de esfuerzo extra (esto no quiere decir que no se puedan ajustar), y el tamaño del archivo es más pequeño (probablemente no relevante)
piensa en esto: necesitas almacenar algo que va a ser "persistente"? – xvatar
Lo almacenaría en un archivo de configuración, lo leería en la memoria mientras duraba el programa y luego lo escribiría de nuevo en el archivo de configuración si se realizaran cambios. –
@xvatar: Y si respondió esa pregunta con un "sí", la siguiente pregunta sería "¿realmente necesito algo más pesado que un archivo de texto?" –