如何用ConfigArgParse解析带方括号的字符串而非列表?
解决ConfigArgParse将带方括号的配置值解析为字符串的问题
要让ConfigArgParse把带方括号的配置值解析成纯字符串,直接在添加参数时设置raw=True即可,这个参数会禁用框架对配置值的自动列表解析和类型转换,保留原始字符串内容。
修改后的代码如下:
import configargparse p = configargparse.ArgParser(default_config_files=['conf.ini']) # 添加raw=True参数,强制保留原始字符串 p.add('--example', raw=True) conf = p.parse_args() print(conf.example) # 输出结果: [something_in_brackets]
原理说明
ConfigArgParse默认会将INI配置中带方括号的值识别为列表格式,即使你手动加引号或指定type=str也无法覆盖这个逻辑。而raw=True参数会跳过框架的自动解析逻辑,直接将配置项的原始文本作为字符串返回,完美匹配你的需求。
如果raw=True在你的版本(ConfigArgParse==1.7)中存在兼容性问题,还可以通过自定义类型函数来实现:
import configargparse def keep_raw_string(value): return value p = configargparse.ArgParser(default_config_files=['conf.ini']) p.add('--example', type=keep_raw_string) conf = p.parse_args() print(conf.example)
不过这种方法的本质是绕过类型解析,效果和raw=True一致,但前者更简洁。
内容的提问来源于stack exchange,提问作者Madoc Comadrin
相关产品推荐
相关产品推荐

