python argparse 两个子解析器基本相同..几乎

python argparse two subparsers are basically same.. almost

是否可以在不实现所有参数两次的情况下扩展子解析器的新名称? 我有一个程序,我们称它为 pgmm,它有一个子函数 create。这个创建函数在某处需要一个配置文件。为了防止寻找这个,创建可以有选项 --noconfig.

我现在想要的是有一些'pseudo sub parser'可能像init,和create --noconfig

基本一样

我希望有一种方法可以不用执行相同的两次..

是吗?

我不知道有什么方法可以将此逻辑添加到 argparse 本身,但您不必为了获得所需的行为而这样做。您可以为 create 创建一个子解析器并添加 init 作为该命令的别名,以便可以使用任一命令名称。然后,在调用 parse_args 后使用参数时,检查执行了哪个子命令,如果是 init,则将 noconfig 标志强制为 True:

sub_parsers = parser.add_subparsers(dest="action")

...

sub = sub_parsers.add_parser('create', aliases=['init'])
sub.add_argument('--noconfig', action='store_true')

....

args = parser.parse_args(args)
if args.action == 'init':
    args.noconfig = True