2010-10-27 15 views
17

Al llamar a ConfigParser.read se le permite pasar una lista de cadenas correspondientes a posibles ubicaciones para los archivos de configuración y la función devuelve una lista de los archivos que se leyeron con éxito.Múltiples archivos de configuración con Python ConfigParser

¿Cuál es el comportamiento predeterminado cuando se cargan varios archivos de configuración que tienen secciones/claves superpuestas? ¿Los archivos posteriores de la lista anulan los valores analizados por los anteriores? ¿Se ha anulado toda la sección o solo hay claves conflictivas?

+1

¿Ha intentado crear y leer múltiples archivos de configuración para ver qué pasaría? – snapshoe

Respuesta

19

Después de conseguir la vuelta para probarlo, ConfigParser sobrescribe las teclas con cada archivo sucesivo, el orden en que se leen los archivos está determinado por el orden de los nombres de archivo en la lista pasados ​​a ConfigParser.read

4

Justo para dar un ejemplo para más detalles.

puedo crear los dos archivos siguientes: config1.ini

# ** config1.ini ** 
[shared] 
prop_uniue1 = 1 
prop_shared = 10 

[unique1] 
test_unique = 101 

y config2.ini:

# ** config2.ini ** 
[shared] 
prop_uniue2 = 2 
prop_shared = 14 

[unique2] 
test_unique = 102 

Entonces si yo ejecute el siguiente puedo ver cómo las configuraciones se actualizan (salidas se muestran como comentarios después de las respectivas declaraciones de impresión):

import ConfigParser 

config = ConfigParser.ConfigParser() 
config.read(['config1.ini', 'config2.ini']) 


print config.sections() # ['shared', 'unique1', 'unique2'] 
print config.get("shared", "prop_uniue1") # 1 
print config.get("shared", "prop_shared") # 14 
print config.get("unique1", "test_unique") # 101 

print config.get("shared", "prop_uniue2") # 2 
print config.get("unique2", "test_unique") # 102 

Entonces, para resumir parecería:

  • como @crasic dice el orden en que se leen los archivos está determinada por el orden en que los nombres de los archivos aparecen en la lista dada al método de lectura,
  • las claves son sobrescritas por archivos posteriores, pero esto se hace en el nivel de opción más bajo en lugar del nivel de sección superior. Esto significa que si tiene opciones que no aparecen en archivos posteriores, incluso si la sección ocurre, entonces se usarán las opciones de los archivos anteriores.
Cuestiones relacionadas