2011-12-03 116 views
6

我有一個程序,有許多可用的選項。 例如用於更改設置的配置選項。Python:argparse子命令子命令?

./app config -h 

使用正常argparse子

現在我想另一個子命令添加到一個名爲列表列出配置的config子值

./app config list 

另外這個命令應該接受另一個給我的幫助選項,以便我可以說

./app config list CATEGORY 

只限於列出一個類別

我的代碼的配置,現在基本上這只是多個命令

>>> 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 

到目前爲止,我無法找到任何方式的子命令使用子命令。 如果這是可能的,怎麼樣?如果不是,還有其他方法可以實現這個目標嗎?

由於提前

+0

如果你在這裏發佈你的代碼,以幫助他人理解你的問題會更好。 – number5

回答

8
#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') 

似乎工作。

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) 
+0

覺得我已經試過了,但生病檢查出來,謝謝 – cwoebker

+0

我試過2.7.2我一定想知道你是否有問題:) –