【发布时间】:2013-02-05 23:00:33
【问题描述】:
通常,要在 argparse 中添加子解析器,您必须这样做:
parser = ArgumentParser()
subparsers = parser.add_subparser()
subparser = subparsers.add_parser()
我遇到的问题是我正在尝试添加另一个命令行脚本,它有自己的解析器,作为我的主脚本的子命令。有没有简单的方法可以做到这一点?
编辑:澄清一下,我有一个文件script.py,看起来像这样:
def initparser():
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
parser.add_argument('--bar')
return parser
def func(args):
#args is a Namespace, this function does stuff with it
if __name__ == '__main__':
initparser().parse_args()
所以我可以这样运行:
python script.py --foo --bar
我正在尝试编写一个模块app.py,它是一个带有几个子命令的命令行界面,所以我可以运行类似的东西:
python app.py script --foo --bar
与其将所有initparser() 逻辑复制并粘贴到app.py,我希望能够直接使用我从initparser() 创建的解析器作为子解析器。这可能吗?
【问题讨论】:
标签: python command-line-arguments argparse