【发布时间】:2014-10-10 15:26:10
【问题描述】:
我有一个类似的配置文件:
[Expected Response]
GlobalResponse:
UniqueResponse:
1221
我想要做的是,如果 GlobalResponse 为空,那么我们依赖于设置 UniqueResponse。
subConfigParser = ConfigParser.SafeConfigParser(allow_no_value=True)
subConfigParser.read(os.path.join(relativeRunPath, 'veri.cfg'))
commands = subConfigParser.get('Command List', 'commands').strip().split("\n")
expectedResponse = subConfigParser.get('Expected Response', 'GlobalResponse').strip().split("\n")
print expectedResponse
print len(expectedResponse)
if not expectedResponse:
expectedResponse = subConfigParser.get('Expected Response', 'UniqueResponse').strip().split("\n")
print "Size of unique: {}".format(len(expectedResponse))
if len(expectedResponse) != len(commands):
sys.exit(1)
但是,这是我得到的输出:
[''] # print expectedResponse
1 # print len(expectedResponse)
我错过了什么?
【问题讨论】:
-
您期待什么?
['']是一个包含一项的列表,所以它的长度自然是 1。 -
您是否对为什么要返回
['']感到困惑?或者为什么len([''])等于1?后者是预期行为。 -
进一步的 kindall 评论
[]是一个 len 为 0 的列表 -
嗯,好吧,我不知道
['']== len of 1。对不起,我对 Python 很陌生。所以我想这是一个问题,当我期望它什么都不返回时,ConfigParser 返回一些东西。
标签: python list configparser