2010-10-30 9 views
4

Selon la documentation:Utilisation côlons dans ConfigParser Python

Le fichier de configuration se compose de sections, dirigée par un en-tête et suivi du nom [section]: entrées de valeur, avec continuations dans le style de RFC 822 (voir section 3.1.1, "LONGUE TÊTE CHAMPS"); name = value est également accepté. Python Docs

Cependant, l'écriture d'un fichier de configuration utilisez toujours le signe égal (=). Y at-il une option pour utiliser le signe deux-points (:)?

Merci d'avance.

H

Répondre

6

Si vous regardez le code définissant la méthode RawConfigParser.write à l'intérieur ConfigParser.py vous verrez que les signes égaux sont codés en dur. Donc, pour changer le comportement que vous pourriez le sous-classe ConfigParser que vous souhaitez utiliser:

import ConfigParser 
class MyConfigParser(ConfigParser.ConfigParser): 
    def write(self, fp): 
     """Write an .ini-format representation of the configuration state.""" 
     if self._defaults: 
      fp.write("[%s]\n" % DEFAULTSECT) 
      for (key, value) in self._defaults.items(): 
       fp.write("%s : %s\n" % (key, str(value).replace('\n', '\n\t'))) 
      fp.write("\n") 
     for section in self._sections: 
      fp.write("[%s]\n" % section) 
      for (key, value) in self._sections[section].items(): 
       if key != "__name__": 
        fp.write("%s : %s\n" % 
          (key, str(value).replace('\n', '\n\t'))) 
      fp.write("\n") 

filename='/tmp/testconfig'  
with open(filename,'w') as f: 
    parser=MyConfigParser() 
    parser.add_section('test') 
    parser.set('test','option','Spam spam spam!') 
    parser.set('test','more options',"Really? I can't believe it's not butter!") 
    parser.write(f) 

rendements:

[test] 
more options : Really? I can't believe it's not butter! 
option : Spam spam spam! 
+0

Merci pour l'info! – Hernan

+0

@ user482819 Alors acceptez la réponse s'il vous plaît. De cette façon, nous n'avons plus besoin de solution. – bluish