问题标签 [subparsers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6307 浏览

python - 如何使用 argparse 处理 CLI 子命令

我需要实现程序接受子命令的命令行界面。

例如,如果程序名为“foo”,则 CLI 看起来像

cmd1并且cmd3必须与它们的至少一个选项一起使用,并且三个cmd*参数始终是互斥的。

我正在尝试在 argparse 中使用子解析器,但目前没有成功。问题在于cmd2,它没有参数:

如果我尝试添加不带参数的子解析器条目,则返回的命名空间parse_args将不包含任何告诉我选择了此选项的信息(请参见下面的示例)。如果我尝试将cmd2作为参数添加到parser(而不是子解析器),那么 argparse 将期望该cmd2参数后跟任何子解析器参数。

有没有一种简单的方法来实现这一点argparse?用例应该很常见……</p>

以下是我迄今为止所尝试的更接近我需要的内容:

0 投票
1 回答
1334 浏览

python - 如何检查特定的子解析器?

如何检查特定的子解析器?

0 投票
1 回答
9923 浏览

python - Python argparse,根据父参数值提供不同的参数

这就是我想做的:一个看起来像 git 命令行为的命令。无论您键入 git commit 还是 git checkout,您都不会得到相同的选项。但在我的情况下,我想根据这样的参数值(文件名)提供不同的参数:

是否可以使用 python 和 argparse 来做这种事情?
到目前为止我尝试过的是:

我不知道我是否应该使用子解析器或子解析器或组,我有点迷失在 argparse 提供的所有可能性中

0 投票
1 回答
182 浏览

python - Python argparse subparser 的有效用法?

我打算使用 argparse 库编写命令,这是我的命令结构:

在这里,本地有多个命令分组,例如本地提交,本地添加等。例如 [-d my_address] 在 main 中解析,本地差异之后的所有开关都由为本地差异执行的函数一起解析。

同样,还有一个命令组与本地并行;说全球。

开关 -d 不与 -r 混合。因此,解析器解析 -r 不知道 -d ,反之亦然。

是否可以使用 argparse 来实现这一点?如果是的话,有人可以建议我一个粗略的算法来做到这一点。如果不是,在 python 中还有什么其他可能的方法来做到这一点?谢谢。

0 投票
0 回答
423 浏览

python - 是否可以将子解析器(来自 Python argparse)命名为“--name”甚至“-n”?

我已经开始使用,argparse因为我必须为邮件脚本编写 Unix 风格的参数解析。

使用提供文件名邮件程序的“自动”选项,它将执行作为文件名接收的脚本,获取准备好的邮件并发送它。在第二种模式下--manual,它应该能够从头开始构建任何邮件——一个文件作为内容,几个附件,几个提供邮件列表的选项。我真的很想在那里使用--long_opt约定(也许-short_opt也是),但如果我理解我应该使用子解析器。

是否可以将 subparser 命名为'--name'或什至'-n'?现在,我想不是 - 我有一个错误。

示例用例:

广告。4) ALL_DEVELOPERS 可以是字符串或整数(数据库中组的键)

下面的代码:

那太好了,但是我想在这里解析很多参数(并且所有参数都是必需的),并且在第二个选项中,我只需要一个路径来使用脚本来完成所有工作:

我有的:

如果不可能,我应该使用 _parse_known_args_ 函数还是这是个坏主意,只留下名称“手动”和“自动”,因为它们看起来足够清晰?

0 投票
1 回答
744 浏览

python - 具有默认值和必需的 Argparser

我尝试构建一个 argparser,其中一个解析器应该具有默认值,并且也是必需的。到目前为止,我有以下内容:

当我从 CLI 运行它时,我收到一个错误:

我明白为什么会出现这种情况,因为我不包括--type在 CLI 中。这就是我想要实现的,即使我没有在 CLI 上包含解析器选项,也会设置默认值。

无论如何要运行这个?

0 投票
2 回答
2119 浏览

django - 是否可以在 django 管理命令中创建子解析器?

标题确实说明了一切,但我目前有这个,但它不起作用:

我的具体想法是创建一个具有子命令的命令,用于下载 XML 内容或将其解析到数据库中。

0 投票
1 回答
1398 浏览

python - argparse:解析多个子命令

做了一些研究,但找不到任何可行的解决方案。我正在尝试解析以下命令行,其中“test”和“train”是两个独立的子命令,每个子命令都有不同的参数:

我一直在尝试使用两个子解析器('test','train'),但似乎当时只能解析一个。让主解析器的那些子解析器父级也很棒,例如命令'-a'不必同时添加到子解析器'train'和'test'

有什么解决办法吗?

0 投票
2 回答
1075 浏览

python - 其他参数隐含的 argparse 子解析器

定义子解析器的通常方法是

并且子解析器将被调用

我正在实现一个调用多个转换器的包。如果我使用通常的子解析器方法,我将不得不这样做

这既重复又容易出错,因为用户可能会调用

我更希望从主解析器自动确定子解析器,以便用户可以使用命令

and会从andargparse中确定 subparser并调用 subparser来解析. 当然,这里是特定于子解析器的。ext1_to_ext2file.ext1file.ext2ext1_to_ext2EXTRAEXTRA

我尝试为每个转换器使用add_argument_group参数组(

我尝试使用parse_known_args两个位置参数,确定并使用适当的子解析器来解析剩余的参数,但是很难从帮助消息中为用户提供转换器列表及其参数。

有没有办法做到这一点?

0 投票
2 回答
536 浏览

python - Python argparse:在帮助字符串中获取子解析器程序的名称

我正在为带有各种子解析器的 python 模块编写参数解析器。我的目标是有一个共享的参数,其参数构造函数被传递给多个孩子:

所需的输出将类似于

当我使用这个确切的设置时,我得到的master prog1不是. 我应该在标记的行中更改什么以获得所需的结果?prog1foo#Line of interest