Python: 检查ConfigParser 键是否不为空

Python: Check if ConfigParser key is not empty

如何检查 ConfigParser 密钥中是否包含内容?
我不想检查密钥是否存在,我想知道它是否有任何价值。

示例config.ini

[optionalConfigs]
option1 = something
option2 = 38
option3 = ;empty

示例脚本

import configparser
config = configparser.ConfigParser()
config.read(config.ini)

# None of this gave me output
if config.get('optionalConfigs', 'option1'):
    print("Option 1 has content")
if config.get('optionalConfigs', 'option2'):
    print("Option 2 has content")
if config.get('optionalConfigs', 'option3'):
    print("Option 3 has content")

有一个 ConfigParser 内置函数,或者我需要做其他事情?

下面是 ConfigParser get 代码。
如您所见,可以抛出 2 个异常:

  1. NoSectionError - 找不到节时

  2. NoOptionError - 当找不到选项时

    def get(self, section, option):
         opt = self.optionxform(option)
         if section not in self._sections:
             if section != DEFAULTSECT:
                 raise NoSectionError(section)
             if opt in self._defaults:
                 return self._defaults[opt]
             else:
                 raise NoOptionError(option, section)
         elif opt in self._sections[section]:
             return self._sections[section][opt]
         elif opt in self._defaults:
             return self._defaults[opt]
         else:
             raise NoOptionError(option, section)
    

有一个选项。默认情况下,解析器不允许内联注释。在你的例子中

option3 = ;empty

option3 的值为 ";empty"。您可以使用可用作内联注释的字符串列表来更改它

config = configparser.ConfigParser(inline_comment_prefixes=[";"])

现在 option3 的值将是一个空字符串,就好像您已经配置了

option3 =

请注意,由于该选项具有等号,因此您将所有内容分配给右侧,这是一个空字符串。如果你只是配置

option3

这会引发错误,因为没有分配任何值。也可以配置该行为,但那是另一回事了。