ConfigParser中的布尔值总是返回True

use*_*941 13 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'))
Run Code Online (Sandbox Code Playgroud)

这是conf.ini:

[main]
some_boolean: yes
some_other_boolean: no
Run Code Online (Sandbox Code Playgroud)

运行脚本时,它会打印True两次.为什么?它应该是False,如some_other_boolean设置的那样no.

Joh*_*ica 27

用途getboolean():

print config.getboolean('main', 'some_boolean') 
print config.getboolean('main', 'some_other_boolean')
Run Code Online (Sandbox Code Playgroud)

Python手册:

RawConfigParser.getboolean(section, option)
Run Code Online (Sandbox Code Playgroud)

一种便捷方法,它将指定部分中的选项强制转换为布尔值.请注意,该选项的可接受值为"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
Run Code Online (Sandbox Code Playgroud)