2015-04-24 51 views
3

是否有可能在python中拆分組中的參數?下面是與argparse的MWE:拆分命令行參數組

#!/usr/bin/python3 

import argparse 

parser = argparse.ArgumentParser() 

# group 1: 
parser.add_argument('-a', '--aa', 
        help = "option a", 
        dest = 'a', 
        action = 'store', 
) 
parser.add_argument('-b', '--bb', 
        help = "option b", 
        dest = 'b', 
        action = 'store', 
) 

# group 2: 
parser.add_argument('-c', '--cc', 
        help = "option c", 
        dest = 'c', 
        action = 'store', 
) 
parser.add_argument('-d', '--dd', 
        help = "option d", 
        dest = 'd', 
        action = 'store', 
) 

# last group: 
parser.add_argument('--version', action='version', version='%(prog)s 0.1') 


args = parser.parse_args() 

這給:

./test02.py -h 
usage: test02.py [-h] [-a A] [-b B] [-c C] [-d D] [--version] 

optional arguments: 
    -h, --help show this help message and exit 
    -a A, --aa A option a 
    -b B, --bb B option b 
    -c C, --cc C option c 
    -d D, --dd D option d 
    --version  show program's version number and exit 

雖然我想:

./test02.py -h 
usage: test02.py [-h] [-a A] [-b B] [-c C] [-d D] [--version] 

optional arguments: 
    -h, --help show this help message and exit 
    --version  show program's version number and exit 

    group 1: 
    -a A, --aa A option a 
    -b B, --bb B option b 

    group 2: 
    -c C, --cc C option c 
    -d D, --dd D option d 

回答

4

既然你只是想羣體影響幫助顯示,argument groups應該做的絕招: https://docs.python.org/3/library/argparse.html#argument-groups

parser = argparse.ArgumentParser() 

group1 = parser.add_argument_group('group1') # can take description as well 
group1.add_argument('-a', '--aa', 
        help = "option a", 
        dest = 'a', 
        action = 'store', 
) 
group1.add_argument('-b', '--bb', 
        help = "option b", 
        dest = 'b', 
        action = 'store', 
) 

group2 = parser.add_argument_group('group 2') 
group2.add_argument('-c', '--cc', 
        help = "option c", 
        dest = 'c', 
        action = 'store', 
) 
group2.add_argument('-d', '--dd', 
        help = "option d", 
        dest = 'd', 
        action = 'store', 
)