2012-10-05 16 views
6

これは私のサンプルスクリプトです:ブール値は常に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')) 

そして、これがconf.iniです:

[main] 
some_boolean: yes 
some_other_boolean: no 

スクリプトを実行している、それが二回Trueを印刷します。どうして? some_other_booleannoに設定されているため、Falseにする必要があります。

答えて

18

使用getboolean() Trueで

RawConfigParser.getboolean(section, option) 

ブール値を指定したセクションのオプションを強制する便利なメソッド。このメソッドがTrueを返し、 "0"、 "no"、 "false"、および "off"を返すように、オプションの受け入れられた値は "1"、 "yes"、 "true" "、それはFalseを返す原因となります。これらの文字列値は、大文字と小文字を区別しない方法でチェックされます。それ以外の値を指定すると、ValueErrorが発生します。

bool()コンストラクタは、空の文字列をFalseに変換します。空でない文字列はTrueです。 bool()は "false"、 "no"などのための特別な処理を行いません。

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

bah私はほとんど同じサンプルストリングを持っていました... –

1

文字列 "no"を返します。 Python manualから

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

::ブール値( "なし")

関連する問題