我使用的python3 argparse。 在我的剧本,我有一些subparsers,位置参数以及一些可选的参数。 我有一个可选的参数在任意数量的文件路径通过,并且它使用nargs='*'
。 显示这样对我的脚本的使用信息:
usage: myprog.py subparser1 [-h] [--dir DIR]
[--files [FILES [FILES ...]]]
positional_arg
但是,如果你真的把positional_arg
后--files
标志这一用法消息的建议,我觉得解析器最终消费为文件路径,而不是(因为的nargs='*'
),然后抛出,因为一个错误它没有找到所需要的positional_arg
。
我认为是打印出的使用信息的方式是误导性的。 由于我有多个subparsers,我想找到一种方法来改变所有使用邮件(不使用手动输入所有这些usage=
参数)只是这样的位置参数首先显示,希望清理的混乱。
所以我的主要问题是如何更改的参数是argparse消息的使用部分内的排序方式?
编辑解决一个可能的解决方案并不为我工作。
我不想添加--files
标志与位置参数nargs='*'
。 首先,因为这使得它现在显示了帮助消息的“位置参数”部分中,而不是与我的可选参数,其余所以使它看起来像它需要的“可选参数”部分中,即使你可以它传递0参数。
其次,由于因为如果我想有另一个标志,需要除了任意数量的参数--files
(如--folders
),如果我让他们两个位置参数,我碰到了同样的问题在哪里第一个会一直占用参数,直到结束。 如果我做了一个位置和一个可选则误导用法消息仍然是一个问题。