ConfigParser中的布尔值总是返回True

时间:2012-10-05 16:57:23

标签: python boolean configparser

这是我的示例脚本:

import ConfigParser

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

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

这是conf.ini

[main]
some_boolean: yes
some_other_boolean: no

运行脚本时,它会两次打印True。为什么?它应为False,因为some_other_boolean设置为no

2 个答案:

答案 0 :(得分:23)

使用getboolean()

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

来自Python manual

RawConfigParser.getboolean(section, option)
     

一种便捷方法,它将指定部分中的选项强制转换为布尔值。请注意,该选项的可接受值为“1”,“yes”,“true”和“on”,这会导致此方法返回True,并且“0”,“no”,“false”和“off” “,导致它返回False。以不区分大小写的方式检查这些字符串值。任何其他值都会导致它引发ValueError。

bool()构造函数将空字符串转换为False。非空字符串为True。 bool()对“假”,“不”等没有特别的做法。

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

答案 1 :(得分:1)

返回字符串“no”。 bool(“no”)是真的