2012-10-05 11 views
6

To jest mój przykładowy skrypt:Boolean w ConfigParser zawsze zwraca True

import ConfigParser 

config = ConfigParser.ConfigParser() 
config.read('conf.ini') 

print bool(config.get('main', 'some_boolean')) 
print bool(config.get('main', 'some_other_boolean')) 

A to conf.ini:

[main] 
some_boolean: yes 
some_other_boolean: no 

Po uruchomieniu skryptu, drukuje True dwukrotnie. Czemu? Powinien to być False, ponieważ some_other_boolean jest ustawiony na no.

Odpowiedz

18

Zastosowanie getboolean():

print config.getboolean('main', 'some_boolean') 
print config.getboolean('main', 'some_other_boolean') 

Z Python manual:

RawConfigParser.getboolean(section, option) 

Metoda pomocnicza przekształcająca wartość opcji w określonym punkcie do wartości logicznej . Zauważ, że akceptowane wartości dla opcji to "1", "tak", "true" i "on", co powoduje, że ta metoda zwraca True, i "0", "no", "false" i "off" ", które powodują, że zwraca Fałsz. Te wartości łańcuchowe są sprawdzane w sposób niewrażliwy na wielkość liter. Każda inna wartość spowoduje podniesienie ValueError.

Konstruktor bool() konwertuje pusty ciąg na False. Niepuste ciągi są prawdziwe. bool() nie robi nic specjalnego dla "false", "no", itp.

>>> bool('false') 
True 
>>> bool('no') 
True 
>>> bool('0') 
True 
>>> bool('') 
False 
+0

bah miałem prawie taki sam zestaw przykładowych ciągów ... –

1

Powoduje zwrócenie ciągu "nie". bool ("nie") jest prawdziwe

Powiązane problemy