python argparse

import argparse

'''The following code is a Python program that takes a list of integers and produces either the sum or the max'''
    '''
usage: argparser_test.py [-h] [--sum] N [N ...]

Process some integers.

positional arguments:
  N           an integer for the accumulator

optional arguments:
  -h, --help  show this help message and exit
  --sum       sum the integers (default: find the max)
  '''
    parser = argparse.ArgumentParser(description='Process some integers.')
    parser.add_argument('integers', metavar='N', type=int, nargs='+',
                       help='an integer for the accumulator')     # nargs='+' >=1, nargs='*' 
    parser.add_argument('--sum', dest='accumulate', action='store_const',
                       const=sum, default=max,
                       help='sum the integers (default: find the max)')

    args = parser.parse_args()
    print(args.accumulate(args.integers))

    # python argparser_test.py --sum 3
    # 3
    # python argparser_test.py --sum 3 4
    # 7
    # python argparser_test.py 3 4 5 --sum
    # 12

  https://docs.python.org/3/library/argparse.html

parser = argparse.ArgumentParser()
parser.add_argument('--foo')         # optional argument
parser.add_argument('bar')           # position argument, required
args = parser.parse_args(['bar', '--foo', 'BAR'])
vars(args)
>>{'bar':'bar', 'foo': 'BAR'}

parser.print_help() # equal python prog -h

  

# alternative
parser = argparse.ArgumentParser(prog='PROG')
group = parser.add_mutually_exclusive_group()
group.add_argument('--foo', action='store_true')
group.add_argument('--bar', action='store_false')

args = parser.parse_args(['--foo'])
>>Namespace(bar=True, foo=True)

parser.parse_args(['--bar'])
>>Namespace(bar=False, foo=False)

parser.parse_args(['--foo', '--bar'])
>>
usage: PROG [-h] [--foo | --bar]
PROG: error: argument --bar: not allowed with argument --foo


# required
parser = argparse.ArgumentParser(prog='PROG')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--foo', action='store_true')
group.add_argument('--bar', action='store_false')

parser.parse_args([])
>>
usage: PROG [-h] (--foo | --bar)
PROG: error: one of the arguments --foo --bar is required

  Note that metavar only changes the displayed name

 

parse = argparse.ArgumentParser()
parse.add_argument("a", help="params means")
parse.add_argument("-C", "--gc", default="count")
parse.add_argument("--ga", help="params means ga",dest='simple_value',choices=['A', 'B', 'C', 0])
parse.add_argument("--gb", help="params means gb",action="store_const",const='value-to-store')
args = parse.parse_args()
print args.simple_value,args.gb,args.gc

### add_argument 说明
不带'--'的参数
    调用脚本时必须输入值
    参数输入的顺序与程序中定义的顺序一致
'-'的参数
    可不输入    add_argument("-a")
    类似有'--'的shortname,但程序中的变量名为定义的参数名
'--'参数
    参数别名: 只能是1个字符,区分大小写
        add_argument("-shortname","--name", help="params means"),但代码中不能使用shortname
    dest: 参数在程序中对应的变量名称 add_argument("a",dest='code_name')
    default: 参数默认值
    help: 参数作用解释  add_argument("a", help="params means")
    type : 默认string  add_argument("c", type=int)
    action:

    store:默认action模式,存储值到指定变量。
    store_const:存储值在参数的const部分指定,多用于实现非布尔的命令行flag。
    store_true / store_false:布尔开关。 store_true.默认为False,输入则为true。 store_flase 相反
    append:存储值到列表,该参数可以重复使用。
    append_const:存储值到列表,存储值在参数的const部分指定。
    count: 统计参数简写输入的个数  add_argument("-c", "--gc", action="count")
    version 输出版本信息然后退出。

    const:配合action="store_const|append_const"使用,默认值
    choices:输入值的范围 add_argument("--gb", choices=['A', 'B', 'C', 0])
    required : 默认False, 若为 True, 表示必须输入该参数


==================================================================================
    Keyword Arguments:
        - option_strings -- A list of command-line option strings which    should be associated with this action.
        - dest -- The name of the attribute to hold the created object(s)
        - nargs -- The number of command-line arguments that should be  consumed. By default, one argument will be consumed and a single  value will be produced. 
                     Other values include:

                - N (an integer) consumes N arguments (and produces a list)
                - '?' consumes zero or one arguments
                - '*' consumes zero or more arguments (and produces a list)
                - '+' consumes one or more arguments (and produces a list)

                    Note that the difference between the default and nargs=1 is that with the default, a single value will be produced, while with  nargs=1, a list containing a single value will be produced.
        - const -- The value to be produced if the option is specified and the  option uses an action that takes no values.
        - default -- The value to be produced if the option is not specified.
        - type -- A callable that accepts a single string argument, and returns the converted value.  
                    The standard Python types str, int,  float, and complex are useful examples of such callables.  If None,  str is used.
        - choices -- A container of values that should be allowed. 
                    If not None,  after a command-line argument has been converted to the appropriate type, an exception will be raised if it is not a member of this collection.
        - required -- True if the action must always be specified at the command line. This is only meaningful for optional command-line  arguments.
        - help -- The help string describing the argument.
        - metavar -- The name to be used for the option's argument with the  help string. If None, the 'dest' value will be used as the name.

posted @ 2014-10-08 11:14  道以万计  阅读(712)  评论(0)    收藏  举报