2010-08-06 28 views
22

¿Qué es mejor para crear un archivo de configuración para los programas de Python, el módulo integrado (ConfigParser) o el proyecto independiente (ConfigObj)?¿Qué es mejor, ConfigObj o ConfigParser?

+1

Además, ¿es bueno el YAML? – Apocryphon

+2

"Mejor" depende del contexto. Simple, complicado? ¿Qué tipo de configuración? – detly

+3

Apocryphon: le sugiero que edite la pregunta a algo así como: "¿Cuáles son las desventajas y las ventajas de ConfigParser, ConfigObj, YAML?" –

Respuesta

4

Hasta ahora, encontré ConfigParser suficiente en cualquier momento que lo usé. Además, es una batería incluida y no una biblioteca de terceros.

Aunque tengo que admitirlo, los ejemplos de código en la documentación de ConfigObj hacen que ConfigParser parezca realmente sutil en comparación. Para una secuencia de comandos que manipula pesadamente archivos .ini, lo preferiría.

+0

Estoy de acuerdo. Descubrí que las características que me faltaban en ConfigParser están en ArgParse, que también es una batería incluida desde 2.7. Donde tengo Python 2.7 disponible, he migrado a ArgParse. – Hernan

17

Recientemente cambié de configparser a configobj, y estoy encantado de haberlo hecho.

Para mí, la gran diferencia es configobj's validator. Me permite muy fácil/sucintamente (1) definir el tipo y los valores aceptables para cada entrada, y (2) establecer los valores predeterminados.

Esas dos características me ahorran una gran cantidad de código y evitan que muchas cosas salgan mal. Además, no hay gastos indirectos adicionales para usar configobj en términos de la complejidad de mi código, y la biblioteca es bastante pequeña.

+0

Para el registro, encontré la mejor introducción para configobj [este tutorial] (http://www.voidspace.org.uk/python/articles/configobj.shtml) - está un poco anticuado, pero explica las operaciones básicas y la filosofía mejor que los documentos, imho. –

5

Dependiendo de su versión de Python, puede ser polémico si esto responde a su pregunta, pero después de una breve mirada a ConfigParser y ConfigObj, me conformé con el configparser, la versión Python 3 de ConfigParser. There’s also a backported version on PyPI.

ConfigParser me pareció engorroso, tal vez incluso, me atrevo a decirlo, antipático, y con ConfigObj encontré un problema esotérico con las listas (preferiría poder alinearlos verticalmente, ya que los míos son realmente largos) , y no ayudó que la última versión fuera publicada hace más de dos años. La API de configparser, sin embargo, parecía tan amplia como la de ConfigObj (aunque no tan rica en funciones), y cuando nos movemos a Python 3, probablemente pueda cambiar fácilmente a la versión incorporada.

Por cierto, funciona muy bien hasta el momento.