Python argparse共存所需arg和子parser的位置

Python argparse共存所需arg和子parser的位置,python,argparse,Python,Argparse,问题:我有一个具有1个必需参数的解析器和一个接受3个参数的子解析器,当调用该子解析器时,其中2个是必需的 如下 代码: parser.add_argument("-f", "--foo", type=str, required=True, help="foo help") subparsers=parser.add_subparsers(help="Sub parsers") mysubparser = subparsers.add_parser("a", help="a subparser"

问题:我有一个具有1个必需参数的解析器和一个接受3个参数的子解析器,当调用该子解析器时,其中2个是必需的

如下

代码:

parser.add_argument("-f", "--foo", type=str, required=True, help="foo help")
subparsers=parser.add_subparsers(help="Sub parsers")
mysubparser =  subparsers.add_parser("a", help="a subparser")
mysubparser.add_argument("-b", "--bar", type=str, required=True, help="bar help")
mysubparser.add_argument("-bz", "--baz", type=str, required=True, help="baz help")
mysubparser.add_argument("-bzg", "--bazinga", action="store_true", help="bazinga help")
我的尝试:
我的问题是
python myscript.py-f“hi”a-b“hi”-bz“hi”
可以工作,但是
python myscript.py a-b“hi”-bz“hi”-f“hi”
不能工作。是否必须首先指定所需的参数?我觉得第一种方式看起来有点笨重。有没有办法解决这个问题


我希望两个版本都能工作。或者一个更好的替代方法,以这种方式执行操作

一旦您给出子命令,任何选项都将被视为属于相应的子命令。主解析器的参数必须在子命令之前给出。对,我希望会有某种解决方法,无论如何,谢谢:)有些人更喜欢为每个子解析器定义
--foo
。在某种程度上,这是一个逻辑问题,
foo
对主解析器或子解析器有更多意义吗?我想我理解你的意思。实际上每个子解析器都需要foo,因此我想我应该用一个方法将它添加到每个子解析器中。谢谢:)仅供参考:这与
git
的行为方式相同(git命令本身的参数位于子命令及其参数之前)。在IIRC中,其他命令行解析器(如
单击
)也以这种方式运行。我想说的是,您可能运气不好,因为许多工具都希望它的行为与
argparse
的行为相同:(一旦给出子命令,任何选项都将被视为属于相应的子命令。主解析器的参数必须在子命令之前给出。对,我希望会有某种解决方法,无论如何,谢谢:)有些人更喜欢为每个子解析器定义
--foo
。在某种程度上,这是一个逻辑问题,
foo
对主解析器或子解析器有更多的意义。我想我理解你的意思。实际上每个子解析器都需要foo,因此我想我应该用me将它添加到每个子解析器中方法:谢谢:)仅供参考:这与
git
的行为方式相同(git命令本身的参数位于子命令及其参数之前)。在IIRC中,其他命令行解析器(如
单击
)也以这种方式运行。我想说的是,您可能运气不好,因为许多工具都希望它的行为与
argparse
的行为相同:(