通常,要在argparse
中添加子parser,必须执行以下操作:
parser = ArgumentParser()
subparsers = parser.add_subparser()
subparser = subparsers.add_parser()
我遇到的问题是我试图添加另一个命令行脚本,它有自己的解析器,作为主脚本的子命令。有没有一个简单的方法可以做到这一点?在
编辑:为了澄清,我有一个文件script.py
如下所示:
所以我可以这样做:
python script.py --foo --bar
我试图编写一个模块app.py
,这是一个命令行界面,有几个子命令,所以我可以运行类似于:
python app.py script --foo --bar
与其将所有的initparser()
逻辑复制粘贴到app.py
上,我希望能够直接使用从initparser()创建的解析器作为子解析器。这可能吗?在
您可能想看看shlex模块,因为在我看来,您试图破解
ArgumentParser
来做一些它实际上并不打算做的事情。在话虽如此,如果没有实例来说明你正在试图解析的是什么,很难找到一个好的答案。在
您可以使用
parents
参数ss
是一个解析器,它共享为initparser
定义的所有参数。在ss
或{-h
没有定义两次。在我认为您的问题可以通过argparse的声明性包装器来解决。{我写的那个叫做。它有助于将命令的定义(包括所有与参数相关的内容)与组装(包括子parser)和分派分离开来。在
相关问题 更多 >
编程相关推荐