2017-04-25 74 views
0

输入文件Test.ini:为什么下面的python代码总是返回false?

;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()无法工作或有什么我的代码错了?

回答

5

您的行以行分隔符结尾,您没有删除。剥去线从起点和终点删除空格:

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

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

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

而不是建立自己的解析器,可以考虑使用从该configparser module标准库。它完全支持INI格式(包括使用;作为评论)。

+0

在提供的代码示例中选择文本时,似乎有一些空格而不是换行符(尽管我不确定这是否仅仅是格式化问题)。在遍历行时,不会自动省略新行吗?无论如何,'.strip()'自然处理任何空格,无论它们是空格还是换行 –

+2

@LennartKloppenburg:不,不会删除换行符。 –

+0

configparser模块真的非常有用。谢谢你让我知道这个图书馆。 –

相关问题