【问题标题】:ConfigArgParse throwing unrecognized arguments with default config.iniConfigArgParse 使用默认的 config.ini 抛出无法识别的参数
【发布时间】:2019-02-10 20:08:58
【问题描述】:

据我所知,使用ConfigArgParse,我可以在我的程序的 config.ini 文件中设置非常主要的配置,并通过命令行使其中一些选项可用。但是,当我在构造函数中将 config.ini 文件设置为默认值时,出现以下错误:

main.py: error: unrecognized arguments: --input_base data

其中 --input_base 是我的解析器中唯一未包含的配置,如下所示:

parser = ArgParser(default_config_files=['config.ini'])
parser.add_argument('-out', '--output_base', type=str, help='xyz')
parser.add_argument('--amount', type=int, help='xyz')
parser.add_argument('--num_jobs', help='xyz')
parser.add_argument('--batch_size', type=int, help='xyz')
parser.add_argument('--queue_size', type=int, help='xyz')
parser.add_argument('--kind', choices={'long', 'short', 'both'}, help='xyz')
parser.add_argument('--level', choices={'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'}, help='xyz')
config = parser.parse_args()

仅使用 config.ini 可以正常工作,但由于可用性,我还必须包含命令行参数。

感谢您的帮助。欣赏!

【问题讨论】:

  • 你的命令行是什么?我不知道ConfigArgParseargparse 添加了什么,但显然“无法识别的参数”在您的解析器试图解析的sys.argv 列表中。确保你明白为什么。
  • 你能给我更多的信息吗?未知参数来自parser = ... 第一行中提到的config.ini 文件。但是,我不知道如何正确访问它们。

标签: python argparse


【解决方案1】:

尝试将最后一行更改为:

config, unknown = parser.parse_known_args()

这将只解析已知参数(忽略所有未知参数)。

在这个问题中:Python argparse ignore unrecognised arguments

【讨论】:

  • 太好了,谢谢!我想这就是我一直在寻找的。反正有没有像我可以用configconfig.arg 那样以优雅的方式访问这些参数? PS:抱歉回复晚了,我赶上了别的事
  • unknown 只是简单的字符串列表。您可以这样使用它,例如:if '--unknown' in unknown:。但是没有别的办法,因为只能对已知的args进行处理(提供规则,如何处理参数)
猜你喜欢
  • 2013-03-08
  • 2021-11-05
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 2016-08-21
  • 1970-01-01
相关资源
最近更新 更多