Python ConfigParser空值行为与文档不符:空选项返回空字符串而非None
关于configparser中allow_no_value参数的行为疑问
适用版本:Python 3.6 ~ 3.10
官方文档说明:当allow_no_value设为True(默认值为False)时,允许无值的选项;这类选项的值为None,序列化时不带末尾分隔符。
实际运行与文档描述的差异
配置文件内容
[Conf Section] sftp server = 1.2.3.4 sftp port =
测试代码
import configparser cf = configparser.ConfigParser(allow_no_value=True) cf.read('配置文件路径') 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。
不存在的选项的行为(符合文档描述)
测试代码
import configparser cf = configparser.ConfigParser(allow_no_value=True) cf.read('配置文件路径') sftp_user = cf.get('Conf Section', 'sftp user', fallback=None)
运行结果
>>> sftp_user >>> >>> type(sftp_user) <class 'NoneType'>
需要注意的是,不存在的选项≠空选项,二者的行为存在明显差异。
请问这是configparser的问题,还是我对文档内容的理解有误?
内容的提问来源于stack exchange,提问作者Wolker
相关产品推荐
相关产品推荐

