这一段不会随着Python的最新版本而改变,从3.6到3.10
当allow_no_value为True(默认值:False(时,没有值的选项被接受;这些值为None,并且它们被序列化没有尾随分隔符。
https://docs.python.org/3.10/library/configparser.html
不幸的是,由于没有在配置文件选项中输入值,一旦在运行时,它就会变成一个空字符串:
配置文件:
[Conf Section]
sftp server = 1.2.3.4
sftp port =
Python代码:
cf = configparser.ConfigParser(allow_no_value=True)
sftp_server = cf.get('Conf Section', 'sftp server')
sftp_port = cf.get('Conf Section', 'sftp port')
运行时:
>>> sftp_server
1.2.3.4
>>> sftp_port
''
>>> type(sftp_port)
<class 'str'>
正如您所看到的,sftp_port值不是NoneType
如果我们试图搜索一个不存在的选项(在"Conf Section"中(,则文档行为是一致的:
(我们必须使用回退选项(
Python代码:
cf = configparser.ConfigParser(allow_no_value=True)
sftp_user = cf.get('Conf Section', 'sftp user', fallback=None)
运行时:
>>> sftp_user
>>>
>>> type(sftp_user)
<class 'NoneType'>
但不存在的期权≠为空期权
是出了什么问题,还是我误解了文件?
我注意到文档中的示例中有以下内容:
[No Values]
key_without_value
empty string value here =