【问题标题】:Click.Argument does not throw Error for missing argumentClick.Argument 不会因缺少参数而引发错误
【发布时间】:2022-08-11 05:24:08
【问题描述】:

我有一个 CLI 工具,并且在其中一个命令中有 click.argument

最初,我有这个:

@click.argument(
    \'file\',
    type=click.Path(exists=True),
)

如果我没有在命令中添加file 参数,它曾经抛出这样的错误:

Error: Missing argument \'FILE\'.

现在,我通过像这样添加nargs=-1 添加了无限数量的参数的可能性:

@click.argument(
    \'file\',
    nargs=-1,
    type=click.Path(exists=True),
)

现在,如果我不传递 file 参数,我不会收到上述错误消息。

我可能会错过什么?

    标签: python arguments click command-line-interface


    【解决方案1】:

    由于您已经确定您的论点可以接受无限数量的输入,因此您也可以接受没有输入的可能性。

    根据Variadic Functions 的文档,这些值作为元组传递。您可能会收到一个不会导致错误的空元组。

    在文档中再往下一点,有一个关于非空可变参数.这是使用required=True 支持的功能,但不推荐。来自文档的引用:

    这样做的原因是,经常使用命令行中的通配符输入调用脚本,如果通配符为空,它们不应该出错。

    无论如何,下面是一个可以解决您的问题的 sn-p。

    @click.argument(
        'file',
        nargs=-1,
        type=click.Path(exists=True),
        required=True
    )
    

    【讨论】:

      猜你喜欢
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 2016-11-09
      • 2015-04-21
      • 2014-08-10
      • 2020-12-24
      • 1970-01-01
      相关资源
      最近更新 更多