我使用Python的configparser读取ini文件。你知道吗
在解析之后,我想打印一个没有被解析器使用的条目列表,以通知用户他们已经在ini文件中添加了将被忽略的条目。你知道吗
考虑这样一个ini文件:
[DEFAULT]
param1 = 1
param2 = 2
param3 = 3
param4 = 4
我想要的是:
parser = configparser.ConfigParser()
parser.read(config_path)
p1 = parser["DEFAULT"]["param1"]
p2 = parser["DEFAULT"]["param2"]
unused = parser["DEFAULT"].get_unused_keys()
最后一行是编成的。我希望变量“unused”包含
["param3", "param4"]
我在手册中没有发现有提到这样的功能,但我会发现它非常有用。我可以从ConfigParser继承并扩展所有访问函数,使其具有跟踪是否访问了特定项的标志,但我希望有一种更简单的方法。你知道吗
我已经写了一个解决方案。它不太优雅,但很管用。您需要从
RawConfigParser
类创建子类,并在类中创建dict变量并扩展get, _get
方法。如下所示,当您使用get, getint, getfloat, getboolean
方法获取variable的值时,相关方法会将节和变量附加到dict中。当您调用get_unused_keys
方法时,它会用已经使用的选项过滤节中所有可用的选项,并给出未使用的选项。你知道吗完整代码:
使用的ini文件:
输出:
仅供参考:
您不应该使用
DEFAULT
作为节的名称,因为它是一个特殊的节,您可能会得到意外的行为。我已经在实现中添加了_get
方法。如果您检查ConfigParser
的原始实现,您可以看到所有特定于类型的getter都使用此方法,因此可以对其进行更改。这意味着现在实现也支持getint, getfloat, getboolean
方法。 我希望我的回答对你有帮助!你知道吗对允许的键进行
set
。然后创建一个set
的已用键。从使用过的键中减去alllowed键。你知道吗使用相同的技术,您可以拥有允许的节名称,以及只允许在某些节中使用的参数。你知道吗
例如,您可以将
allowed_keys
变成dict
的set
:因此,您可以首先查看节名称,然后查看允许节的允许参数名称。你知道吗
相关问题 更多 >
编程相关推荐