Python 3.9.16和ConfigArgParse==1.7
我的conf文件是这样的:
[conf]
example = [something_in_brackets]
我尝试像这样解析配置:
import configargparse
p = configargparse.ArgParser(default_config_files=['conf.ini'])
p.add('--example')
conf = p.parse_args()
print(conf.example)
我想读取某些配置值作为字符串,但有时值将在括号中,使它看起来像一个列表。当这种情况发生时,ConfigArgParse
给出以下错误:
parse.py: error: example can't be set to a list '['something_in_brackets']' unless its action type is changed to 'append' or nargs is set to '*', '+', or > 1
引用ini文件中的conf值不会更改行为。
尝试按照错误消息中的建议使用操作类型append或nargs值会将我的配置值更改为不需要的形式:['something_in_brackets']
,而应该是[something_in_brackets]
。
我也尝试过p.add
的选项,如type=str
,但我找不到一种方法来达到预期的结果。
有没有可能用ConfigArgParse
解析像[example]
这样的配置值,而不把它们变成列表?
1条答案
按热度按时间dgenwo3n1#
方法是以string的形式获取example的值,然后以列表的形式对其求值
我们使用
ast.literal_eval
,因为它比eval
更安全配置文件