argparse 解析器:覆盖选项

Posted

技术标签:

【中文标题】argparse 解析器:覆盖选项【英文标题】:argparse parser: overriding options 【发布时间】:2020-09-03 09:21:22 【问题描述】:

我正在使用 pytest 插件 - pytest-html

插件有一个名为'--self-contained-html' 的选项。我创建了自己的插件,它建立在这个插件的基础上,并添加了另一个选项。我希望,当有人使用我的选项时,原始的 '--self-contained-html' 将设置为 True,即使它没有提供

基本上,我想从以下位置更改选项:

parser.add_option(
'--self-contained-html',
action='store_true',
defaut=False,
)

 parser.add_option(
'--self-contained-html',
action='store_true',
default=<Check_if_parser_option_X_was_given>,
)

【问题讨论】:

在定义选项时无法检查是否通过了某些选项。您需要在解析完成后执行此操作。将默认设置为None & 然后编写逻辑以根据其他选项将其设置为适当的值 【参考方案1】:

您可以尝试以下选项在现有的命令行参数中附加 --self-contained-html。在这样做之前,您可以设置一个条件来检查您设置的选项是否存在于现有的列表中命令行参数。

def pytest_cmdline_preparse(config, args):
    if <option_X> in args:
        args.extend(['--self-contained-html'])

【讨论】:

以上是关于argparse 解析器:覆盖选项的主要内容,如果未能解决你的问题,请参考以下文章

选项之前显示的 Argparse 子解析器帮助

[Python系列-25]:argparse --- 命令行选项参数解析器

Python Argparse 子解析器

parser.add_argument()用法——命令行选项参数和子命令解析器

optparse 到 argparse 的简单包装器?

如何在 argparse 中嵌套自定义参数解析器实例