问题标签 [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.
python - 如何向禁用强制参数的解析器声明可选参数?
标题可能令人困惑,但我想不出更好的解释。基本上,我有一个程序可以对带有一堆可选参数的输入文件进行操作。输入文件对于我的程序是强制性的。所以我写了一个这样的解析器:
测试.py
为简单起见,我没有显示所有选项。现在,我想为这个程序添加一个不需要输入文件并自行运行的功能。让我们将此选项称为a
. Optiona
采用未知数量的参数,--debug
或者其他选项对 option 无效a
。因此,以下将是我的程序的有效运行:
这些将是无效的:
当我将此行添加到我的代码中时
它接受选项a
,但出于可以理解的原因,它说“需要文件”。那么我应该如何修改我的代码来实现我的目标呢?
PS:我也尝试过使用 subparser 但我无法让它按我想要的方式工作,可能是因为我缺乏知识。
python - python cmd2多参数解析器
我有 4 个参数,例如:a、b、c、d。用户可以选择输入 a 或 b 或 c 或 d,否则 a 或 c 仅输入“a”或仅输入“d”,就像所有概率一样。对于如何编写参数解析器。
感谢提前
python - 从父解析器中选择有限的参数
我使用 Argparse 已经有一段时间了,这里是StackOverflow对我遇到的问题的回答。
这个答案并不能完全解决我的问题。
这是从答案中借来的编辑后的代码。(我在添加换行符之前添加了评论)
编辑后的代码代表了这一点
- -p & -q 作为父参数
问题是,我不想在我的子解析器中使用新的父参数“-q”。
我只想在任何子解析器中使用参数“-p”。
这听起来有点不同,但是当我处理这么多子解析器时,我真的想要我的子解析器的最佳选择。
我该怎么做?
python - python argparse 在一个命令行中有多个子解析器
我试图在一个命令行中解析多组参数。setup1 和 setup2 可以有相同的参数
我尝试使用下面的子解析,但它似乎一次只能用于一组子参数。
有人对我如何做到这一点有任何暗示吗?
python-3.x - argparse:如何为子解析器指定自定义帮助文本?
使用argparse
under python3
,我试图以自定义方式设置子解析器帮助文本和子解析器帮助文本。以下示例程序说明了我的问题(示例程序的源代码出现在此消息的底部)。该示例程序应按如下方式运行:
argtest cmd [ ... args ... ]
或者
argtest special subcmd [ ... args ... ]
“cmd”可以是“cmd00”、“cmd01”等,“subcmd”可以是“sub00”、“sub01”等。
当我运行它时argtest cmd00 -h
,我想获得“cmd00”命令的具体帮助。当我运行它时argtest special sub00 -h
,我想获得“sub00”特殊命令的具体帮助。
但是,我没有得到这些帮助值。鉴于下面的代码,当我运行此命令时:
...我得到这个输出:
但是,我想要的是以下内容:
同样,当我运行它时:
...我得到这个输出:
但是,我想要这个:
似乎较低级别的帮助值被忽略了,并且帮助总是强制使用顶层的默认帮助,然后为所有子解析器生成帮助。
鉴于我正在使用嵌套子子解析器的子解析器,有什么方法可以获得我想要的帮助消息?非常感谢。
这是示例程序:
python - 当子命令具有不同的参数时,如何使用子解析器创建带有 argparse 的子命令?
这里有类似的解决方案,但它们要么处理更旧版本的 python,要么只处理解析器而不处理子解析器。我正在编写一个带有简单命令行界面的程序。我希望脚本有子命令。最终结果将如下所示:
或者:
等等
看起来这样做的方法是使用子解析。我已经阅读了关于 subparsing 的 python3 文档并相应地对我的脚本进行了建模,但我遇到了错误。似乎我的一些子命令有参数而其他子命令没有。这是我尝试过的:
出现问题的行是“args.func(args)”行。如果我在括号中包含 args,则不带参数的函数将不起作用。如果我不包含 args,显然接受单个参数的函数不起作用。
当我在 args.fun 括号中有“args”时调用 login 时的个别错误是:
如果我删除 args 并尝试调用 translate,我会得到: TypeError: transfer() missing 1 required positional argument: 'args'
最后,如果我不包含这样的子命令:$ main.py
我得到: AttributeError: 'Namespace' object has no attribute 'func' 理想情况下,我希望它像 --help 一样显示用法
任何见解都会有所帮助。同样,argparse 本身有很多文档,但是我一直很难找到像我正在做的那样使用子解析器的东西。如果有更好的方法来执行子命令,我会全力以赴。
python - argparse 两次输出帮助文本
经过一个小时的谷歌搜索,除了我自己之外,我找不到任何有类似问题的人。我用 argparse 创建了一个命令行界面。最初我试图利用 argparse 的内置帮助文本行为。但是我的老板对默认的帮助文本不满意,所以他让我在一个文本文件中写下完整的用法/帮助文本,然后只显示整个文件。
由于某种原因,在某种情况下,它会输出两次文本。
以下是我的程序如何分解的基础知识:
我有一个顶级解析器。我阅读了我的帮助文本文件,将其设置为字符串 help_text,然后在解析器上设置“usage=help_text”。然后我创建子解析器(其中 4 个,然后是一个基本案例)来创建子命令。这些子解析器中只有一个具有任何附加参数(一个位置,一个可选)。在我修改帮助文本之前,我使用“help =”为每个单独的子命令提供了帮助文本,但现在这些都是空白的。最后,我设置了一个基本案例来在没有给出子命令时显示帮助文本。
这是我得到的行为:
当我在没有子命令和参数的情况下调用主函数时,文本文件中的 help_text 输出,然后像 2-3 行样板代码,我似乎无法摆脱。还因为我的文本文件中出现了用法这个词,所以它说“用法:用法”
当我调用主命令然后键入 --help 时,会发生与上面完全相同的事情。
当我调用具有所需位置参数的一个子命令并且我不包含该参数时......它会两次吐出整个帮助文本。在第二次打印的正上方,它打印该子命令的默认使用行。
最后,当我使用一个没有参数的不同子命令并给它一个参数(一个太多)时,它会完全正确地吐出所有内容,甚至最后没有多余的几行。
我不知道如何对此发表意见或故事。下面是脚本的main函数(我可以验证这个问题只出现在使用了argparse的main函数中,而不是main函数调用的其他函数):
所以澄清一下:
为什么有时会出现额外的几行样板帮助文本,如下所示:
为什么使用参数太少的 subcommandone 会打印两次帮助文本(但不是样板帮助文本的额外行。
为什么使用带有太多参数的 subcommandtwo 可以完美地打印所有内容而没有任何额外的行?