2010-10-27 8 views
17

Lorsque vous appelez ConfigParser.read, vous êtes autorisé à transmettre une liste de chaînes correspondant à des emplacements potentiels pour les fichiers de configuration et la fonction renvoie une liste des fichiers lus avec succès.Plusieurs fichiers de configuration avec Python ConfigParser

Quel est le comportement par défaut lorsque plusieurs fichiers de configuration sont chargés avec des sections/clés qui se chevauchent? Est-ce que les fichiers suivants dans la liste remplacent les valeurs analysées par les plus anciennes? Est-ce que toute la section est surchargée ou juste des clés en conflit?

+1

Avez-vous essayé de créer et de lire plusieurs fichiers de configuration pour voir ce qui se passerait? – snapshoe

Répondre

19

Après avoir obtenu autour de le tester, ConfigParser les touches avec écrase chaque fichier successif, l'ordre dans lequel les fichiers sont lus est déterminé par l'ordre des noms de fichiers dans la liste transmis à ConfigParser.read

4

Juste donner un exemple pour plus de détails.

Je peux créer les deux fichiers suivants: config1.ini

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

[unique1] 
test_unique = 101 

et config2.ini:

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

[unique2] 
test_unique = 102 

Puis si j'exécutez ce qui suit, je peux voir comment les configs sont mis à jour (les sorties sont présentés comme commentaires après les déclarations d'impression respectives):

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 

Donc, pour résumer, il semblerait:

  • comme @crasic dit l'ordre dans lequel les fichiers sont lus est déterminé par l'ordre dans lequel les noms de fichiers apparaissent dans la liste donnée à la méthode de lecture,
  • les clés sont remplacées par des fichiers plus récents, mais cela se fait au niveau de l'option inférieure plutôt qu'au niveau de la section supérieure. Cela signifie que si vous avez des options qui ne se produisent pas dans les fichiers suivants même si la section se produit, les options des fichiers précédents seront utilisées.
Questions connexes