问题标签 [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 投票
0 回答
561 浏览

python - 子解析器函数调用

如何根据用户输入调用以下函数?

例如,如果他们键入:

python test.py cmd1 -n 主机名

  • 它将调用 def cmd1 并将 -n 参数(主机名)传递给函数

    /li>
0 投票
1 回答
2298 浏览

python - Python Argparse 子解析器

我正在使用 Argparse 模块来解析命令行选项。我有一个主脚本,它调用下标 A 或下标 B。我现在有一个 A 和 B 的子解析器实例和主解析器实例,它应该包含有关 A 和 B 需要的变量的信息。就像是:

但是如果我这样使用它,如果我没有在程序调用中指定 A 或 B,我只能通过 --input 选项更改 args.options。执行

或者

都失败了。

0 投票
2 回答
913 浏览

python - 如何从 Python 3 中的现有程序创建带有 argparse 的子解析器?

原帖:

如果一个可执行文件mini_program.py使用argparse以下结构:

如何创建一个parent_program.py使用argparse(我认为是subparser?)的控制器程序具有与以下类似的用法:

然后使用子程序:

所有参数如何传播mini_program.pyparent_program.py?

编辑(更具体的错误消息):

该程序

检查以确保文档正常工作

尝试运行它:

0 投票
1 回答
3606 浏览

python - Argparse 无法识别参数

我在使用 argparse 时遇到了一些问题。我的目标是让用户选择一个且只有一个选项(-a、-b、-c 等),然后选择该选项的参数。我正在使用子解析器来做到这一点:

这只是我计划拥有的子解析器之一。

问题:在命令行中运行时:

我收到“index_name_here”无法识别的错误。我是这样解析的:

我发现了一些与我类似的问题,但他们将 sys.argv 传递给 parse_args(),这是他们的问题。

我怎样才能让 argparse 识别传递的参数?另外,有没有办法一次只传递一个选项?例如:

正确的:

错误的:

谢谢!

0 投票
1 回答
88 浏览

python - add_subparsers 不能识别 sub_argument

我正在尝试构建一个使用子解析器参数的脚本。但是,我不能将任何子参数作为参数传递。导致任何输入组合出现“无效选择:”。

示例输入:

完整输出:

代码是

0 投票
1 回答
120 浏览

python - 带有子命令的命令和子命令请求的 argparse 解决方案

希望这将转化为一个优雅的解决方案,但我自己无法弄清楚。我一直在阅读大量的例子和解释,但我似乎无法让它发挥作用。

我正在编写一个需要以下选项的程序:

如果使用命令,则需要一些子命令或选项。

我很难使用 argparse 库来完成这项工作。我尝试使用 add_argument_group、subparsers 等。但我认为我在这里缺少一些基本的东西。我发现接近的所有示例都是关于 svn,但它们似乎只在 svn 之后上升了 1 级。我需要更多,或者不同的方法。

如果可能的话,我想让dbquery deploy list之后的所有参数都是可选的,至少需要 1 个选项。但是区分系统名称和环境名称可能会变得很棘手,因此最好更改它:

进入

ps [] 之间的选项是可选的,<> 之间的选项是必需的。

提前致谢。

作为对提供我的代码的评论的回应,让我们关注 dbquery,因为其余的可能是重复的:

执行结果:

这看起来不错,但是:

表明预期的参数不是锁定、提升或部署。

好的,反馈有助于我的理解。我现在明白解析器可以得到子解析器,而那些可以得到解析器。因此,一个人可以走的深度可能没有限制。这个新见解让我明白了这一点:(来自我的工作示例的部分副本)

我现在似乎只在不同子命令中使用参数作为“-env”和“-subsystem”时遇到问题。因为当我将它们添加到另一个解析器时存在冲突。我也没有关于选择哪些选项的数据。这也是需要的。

0 投票
1 回答
450 浏览

python - 带有子解析器的 Argparse 无法正常工作,我无法弄清楚

我正在使用带有子解析器的 argparse 来执行不同的操作。每个动作都有略微不同的论点。

我已经按照文档说明进行了设置,当我帮助使用每个子解析器( parser_2)和另一个子解析器( )时,它会显示正确的参数parser_3

这是为了cdf

这是为了clsiss

但是,当我实际运行命令时,我会遇到使用错误:对于从命令行执行的 clsiss:

对于 cdf(从命令行执行):

请帮助,我使用了正确的参数和参数数量,但是当我实际尝试运行它时无法弄清楚为什么使用错误

我仍然遇到同样的错误,这是整个代码,我无法弄清楚。请帮忙

0 投票
2 回答
689 浏览

python - Argparse:具有可变参数的选项的可选参数

我有一个正在尝试改进的 CLI。我想做的是有一个带有 3 个选项的可选参数,根据您的选择,您需要为该选项输入某些参数。

例如:

等等

所以这看起来有点像:

parser.add_argument("--create", help="Create an animal", choices=["dog", "cat", "fish"])

但是我如何为每个选择提供不同的必需参数呢?我必须使用子解析器吗?

编辑:使用稍微不同的架构并让它工作。

0 投票
1 回答
104 浏览

python - 带有通用子解析器命令的 Python argparse

我有一个 python 脚本,我想将它用作另一个命令行工具的包装器。我想拦截我定义的任何子命令,但传递所有其他子命令和参数。我尝试过使用子解析器,这似乎很理想,但它似乎不允许接受通用的未定义命令,类似于parse_known_args常规的ArgumentParser.

我目前拥有的:

我想补充的:

这是行不通的,因为它只需要一个upload或文字星号*

更准确地说,我希望有一个子命令,我只是事先不知道所有子命令将是什么(或者我真的不想列出我要包装的工具的每个子命令)。


经过进一步思考,我意识到这种方法在某些方面对我的使用有些缺陷,尽管我认为这个功能可能在其他地方有它的用途,所以我会留下这个问题。

就我而言,查看我的工具的帮助与它所包含的帮助之间存在冲突。也就是说,我无法区分用户何时想要查看包装器的帮助或查看它所包装的工具的帮助。

0 投票
1 回答
53 浏览

python - 带有多级解析器/子解析器的 Argparse 可选参数

我有一组解析器和子解析器来构建生产或开发系统。如果用户选择生产,他可以添加选项,一切都很好。
如果他了解开发,他可以输入架构,然后输入构建选项。这是它变得粘稠的地方。我希望他能够选择构建选项“通信”“服务器”或“全部”,但如果他选择服务器,他有更多选择。

我的实现如下。我尝试了解析器和子解析器的组合(似乎参数只能添加到解析器,而不是子解析器,对吗?)

它分崩离析有两个原因:
1)我只能选择arch或build,我需要同时选择
2)如果我选择build,它总是要求我选择“服务器”,即使我选择另外两个中的一个。

所以我想要这样的 ./buildServer.py Dev arch -arm build -comms 或 ./buildServer.py Dev arch -arm build -server -tcp

我会很感激并能得到帮助/指导 - TIA

代码:

定义验证():