2010-11-28 7 views
2

Je dois spécifier un mot de passe sur le côté droit du signe égal dans un fichier python configparser, mais le point-virgule est le caractère de commentaire.Comment mettre un point-virgule dans une valeur dans python configparser?

Echapper avec \ ne fonctionne pas. Comment puis-je passer la chaîne "foo;" comme une valeur dans configparser?

+0

Mon 'ConfigParser' lit et écrit des valeurs avec'; 's ... – khachik

+0

Avez-vous essayé de le mettre entre guillemets? (la valeur entière)? – mpen

Répondre

1

Une courte session interactive montre que le point-virgule est lu sans problème.

>>> import StringIO 
>>> import ConfigParser 
>>> f = StringIO.StringIO("[sec1]\npwd=foo;\n") 
>>> p = ConfigParser.ConfigParser() 
>>> p.readfp(f) 
>>> p.items('sec1') 
[('pwd', 'foo;')] 
>>> 
+0

Oui, et maintenant ça marche. Désolé, je dois avoir fait quelque chose d'autre tort. – dmd

1

La mine fonctionne bien. Et remarqué "Lignes commençant avec '#' ou ';' sont ignorés et peuvent être utilisés pour fournir des commentaires "

1

ConfigParser semble avoir un bug avec des espaces devant: points-virgules

>>> import StringIO 
>>> import ConfigParser 
>> p = ConfigParser.ConfigParser() 
>>> s1 = StringIO.StringIO('[foo]\nbla=bar;baz\n') 
>>> p.readfp(s1) 
>>> p.items('foo') 
[('bla', 'bar;baz')] 

>>> s2 = StringIO.StringIO('[foo]\nbla=bar ;-) baz\n') 
>>> p.readfp(s2) 
>>> p.items('foo') 
[('bla', 'bar')] 

>>> s3 = StringIO.StringIO('[foo]\nbla=bar \;-) baz\n') 
>>> p.readfp(s3) 
>>> p.items('foo') 
[('bla', 'bar \\;-) baz')] 
>>> 

Notez que la dernière version est toujours incorrecte, car la barre oblique inverse d'échappement est toujours là ...