2012-10-05 22 views
6

Ésta es mi script de ejemplo:Booleanos en ConfigParser siempre devuelven verdadero

import ConfigParser 

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

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

Y esto es conf.ini:

[main] 
some_boolean: yes 
some_other_boolean: no 

Cuando se ejecuta la secuencia de comandos, se imprime True dos veces. ¿Por qué? Debe ser False, ya que some_other_boolean se establece en no.

Respuesta

18

Uso getboolean():

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

Desde el Python manual:

RawConfigParser.getboolean(section, option) 

Un método de conveniencia que coacciona a la opción en la sección especificada en un valor booleano . Tenga en cuenta que los valores aceptados para la opción son "1", "sí", "verdadero" y "activado", lo que hace que este método devuelva True, y "0", "no", "falso" y "desactivado" ", lo que hace que vuelva falso. Estos valores de cadena se verifican de una manera que no distingue entre mayúsculas y minúsculas. Cualquier otro valor hará que eleve ValueError.

El constructor bool() convierte una cadena vacía en False. Las cadenas no vacías son verdaderas. bool() no hace nada especial para "falso", "no", etc.

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

bah tuve casi el mismo conjunto de cadenas de ejemplo ... –

1

Devuelve la cadena "no". bool ("no") es cierto

Cuestiones relacionadas