Tengo un script de línea de comandos que ejecuto con muchos argumentos. Ahora he llegado a un punto en el que tengo demasiados argumentos, y también quiero tener algunos argumentos en forma de diccionario.
Entonces, para simplificar las cosas, me gustaría ejecutar el script con un archivo de configuración. Realmente no sé qué bibliotecas usar para el análisis del archivo. ¿Cuál es la mejor práctica para hacer esto? Por supuesto, yo mismo podría resolver algo, pero si hay alguna biblioteca para esto, soy todo oídos.
Algunas 'demandas':
- En lugar de usar,
pickle
me gustaría que fuera un archivo de texto sencillo que se pueda leer y editar fácilmente. - Quiero poder agregar datos similares a los de un diccionario, es decir, debería admitirse alguna forma de anidamiento.
Un pseudo archivo de ejemplo simplificado:
truck:
color: blue
brand: ford
city: new york
cabriolet:
color: black
engine:
cylinders: 8
placement: mid
doors: 2
Respuestas:
Puede tener un módulo Python normal, por ejemplo config.py, como este:
y úsalo así:
fuente
.py
archivos son ejecutables, por lo que se podría ejecutar cualquier tipo de código al intentar cargar la configuraciónimport
. Eso es inaceptable desde el punto de vista de la seguridad.ast.literal_eval
? docs.python.org/3/library/ast.html#ast.literal_evalLa configuración de muestra que proporcionó es realmente válida YAML . De hecho, YAML cumple con todas sus demandas, se implementa en una gran cantidad de idiomas y es extremadamente amigable para los humanos. Le recomiendo que lo use. El proyecto PyYAML proporciona un buen módulo de Python que implementa YAML.
Usar el módulo yaml es extremadamente simple:
fuente
pip3 install pyyaml
para que esté listo para importar en scripts de Python.Encontré esto como el más útil y fácil de usar https://wiki.python.org/moin/ConfigParserExamples
Simplemente crea un "myfile.ini" como:
Y recuperar los datos como:
fuente
Yaml y Json son los formatos de archivo más simples y más utilizados para almacenar configuraciones / configuraciones. PyYaml se puede usar para analizar yaml. Json ya es parte de Python desde 2.5. Yaml es un superconjunto de Json. Json resolverá la mayoría de los casos de uso, excepto cadenas de líneas múltiples donde se requiere escapar. Yaml también se encarga de estos casos.
fuente