ConfigParser (Python) 空值变为空字符串,而不是文档所说的"None"



这一段不会随着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 =

最新更新