为什么以下python代码总是返回false?

时间:2017-04-25 09:03:09

标签: python python-3.x

输入文件Test.ini:

;INTEGRITY_PERIOD=300  
INTEGRITY_PERIOD=100

代码:

key = None
value = None

with open('hmi.ini', 'r') as inifile:
    for line in inifile:
        if line.startswith(';INTEGRITY_PERIOD='):
            continue;
        if line.startswith('INTEGRITY_PERIOD='):
            key, value = line.split("=")
            break

if value and value.isdigit():
    print(value)
else:
    print(300)

以上代码总是返回300.看起来像isdigit()不起作用或我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:5)

您的行以行分隔符结尾,您没有删除。剥离线条以从开头和结尾删除空格:

key, value = line.strip().split("=")

行分隔符(\n)不是数字:

>>> '100\n'.isdigit()
False
>>> '100'.isdigit()
True

不要构建自己的解析器,而应考虑使用标准库中的configparser module。它完全支持INI格式(包括使用;作为注释)。