Python:argparse 子命令子命令? [英] Python: argparse subcommand subcommand?
问题描述
我有一个有很多可用选项的程序.例如用于更改设置的配置选项.
./app config -h
使用普通的 argparse 子命令为我提供帮助
现在我想向名为 list 的配置子命令添加另一个子命令以列出配置值
./app 配置列表
此外,该命令应该接受另一个选项,以便我可以说
./app 配置列表 CATEGORY
只列出一个类别的配置
我现在的代码基本上就是这个,只是有更多的命令
<预><代码>>>>解析器 = argparse.ArgumentParser()>>>subparsers = parser.add_subparsers(title='subcommands',... description='有效的子命令',... help='附加帮助')>>>subparsers.add_parser('foo')>>>subparsers.add_parser('bar')>>>parser.parse_args(['-h'])用法:[-h] {foo,bar} ...可选参数:-h, --help 显示此帮助信息并退出子命令:有效的子命令{foo,bar} 额外帮助到目前为止,我找不到在子命令中使用子命令的任何方法.如果这是可能的,如何?如果没有,还有其他方法可以实现这个目标吗?
提前致谢
#file: argp.py导入参数解析解析器 = argparse.ArgumentParser(prog='PROG')parser_subparsers = parser.add_subparsers()sub = parser_subparsers.add_parser('sub')sub_subparsers = sub.add_subparsers()sub_sub = sub_subparsers.add_parser('sub_sub')sub_sub_subparsers = sub_sub.add_subparsers()sub_sub_sub = sub_sub_subparsers.add_parser('sub_sub_sub')
似乎有效.
在 [392] 中:运行 argp.py在 [393]: parser.parse_args('sub sub_sub sub_sub_sub'.split())出[393]:命名空间()在 [400]: sys.version_infoOut[400]: sys.version_info(major=2, minor=7, micro=2, releaselevel='final', serial=0)
I have a program that has many available options. For example a configuration option to change settings.
./app config -h
gives me the help using normal argparse subcommands
now i would like to add another subcommand to the config subcommand called list to list config values
./app config list
additionally that command should accept another option so that i could say
./app config list CATEGORY
only to list the config of one category
my code right now is basically this just with more commands
>>> parser = argparse.ArgumentParser()
>>> subparsers = parser.add_subparsers(title='subcommands',
... description='valid subcommands',
... help='additional help')
>>> subparsers.add_parser('foo')
>>> subparsers.add_parser('bar')
>>> parser.parse_args(['-h'])
usage: [-h] {foo,bar} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
valid subcommands
{foo,bar} additional help
So far I could not find any way to use a subcommand in a subcommand. If this is possible, how? If not, is there any other way to accomplish this goal?
Thanks in Advance
#file: argp.py
import argparse
parser = argparse.ArgumentParser(prog='PROG')
parser_subparsers = parser.add_subparsers()
sub = parser_subparsers.add_parser('sub')
sub_subparsers = sub.add_subparsers()
sub_sub = sub_subparsers.add_parser('sub_sub')
sub_sub_subparsers = sub_sub.add_subparsers()
sub_sub_sub = sub_sub_subparsers.add_parser('sub_sub_sub')
Seems to work.
In [392]: run argp.py
In [393]: parser.parse_args('sub sub_sub sub_sub_sub'.split())
Out[393]: Namespace()
In [400]: sys.version_info
Out[400]: sys.version_info(major=2, minor=7, micro=2, releaselevel='final', serial=0)
这篇关于Python:argparse 子命令子命令?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!