42 votes

Quel est l'objectif de la section DEFAULT dans les fichiers de configuration utilisés par ConfigParser ?

J'ai utilisé ConfigParser pendant un certain temps pour des configurations simples. Une chose qui m'a dérangé pendant longtemps est la section DEFAULT. Je ne suis pas vraiment sûr de ce qui est une utilisation appropriée. J'ai lu la documentation, mais j'aimerais vraiment voir quelques exemples astucieux de son utilisation et comment cela affecte les autres sections du fichier (quelque chose qui illustre vraiment le genre de choses qui sont possibles).

58voto

John Fouhy Points 14700

J'ai trouvé une explication ici en recherchant sur Google "windows ini" "default section". Résumé : tout ce que vous mettez dans la section [DEFAULT] est propagé à toutes les autres sections. En utilisant l'exemple du site lié, disons que j'ai un fichier de configuration appelé test1.ini:

[host 1]
lh_server=192.168.0.1
vh_hosts = PloneSite1:8080
lh_root = PloneSite1

[host 2]
lh_server=192.168.0.1
vh_hosts = PloneSite2:8080
lh_root = PloneSite2

Je peux lire cela en utilisant ConfigParser:

>>> cp = ConfigParser.ConfigParser()
>>> cp.read('test1.ini')
['test1.ini']
>>> cp.get('host 1', 'lh_server')
'192.168.0.1'

Mais je remarque que lh_server est le même dans les deux sections; et, en effet, je réalise qu'il sera le même pour la plupart des hôtes que je pourrais ajouter. Donc je peux faire ceci, comme test2.ini:

[DEFAULT]
lh_server=192.168.0.1

[host 1]
vh_root = PloneSite1
lh_root = PloneSite1

[host 2]
vh_root = PloneSite2
lh_root = PloneSite2

Malgré le fait que les sections n'aient pas de clés lh_server, je peux toujours y accéder:

>>> cp.read('test2.ini')
['test2.ini']
>>> cp.get('host 1', 'lh_server')
'192.168.0.1'

Lisez la page liée pour un exemple supplémentaire d'utilisation de la substitution de variables dans la section DEFAULT pour simplifier encore plus le fichier INI.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X