python中的argparse模块(参数解析)

url: https://docs.python.org/2/library/argparse.html

import argparse
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.


  • 创建子parse,每个子parse对应自己的输入参数
  • import argparse
    
    # sub-command functions
    def subcmd_list(args):
       print "list"
    
    def subcmd_create(args):
       print "create"
    
    def subcmd_delete(args):
       print "delete"
    
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(help='commands')
    
    # A list command
    list_parser = subparsers.add_parser('list', help='Listcontents')
    list_parser.add_argument('dirname', action='store',	help='Directory tolist')
    list_parse.set_defaults(func=subcmd_list)
    
    # A create command
    create_parser = subparsers.add_parser('create', help='Create a directory')
    create_parser.add_argument('dirname',action='store',help='New directoryto create')
    create_parser.add_argument('--read-only',default=False, action='store_true',help='Setpermissions to prevent writing to the directory')
    create_parser .set_defaults(func=subcmd_create)
    
    # A delete command
    delete_parser = subparsers.add_parser('delete',help='Remove a directory')
    delete_parser.add_argument(	'dirname', action='store',help='The directory to remove')
    delete_parser.add_argument('--recursive', '-r',default=False, action='store_true',help='Remove thecontents of the directory, too')
    delete_parser .set_defaults(func=subcmd_delete)
    
    args = parser.parse_args()
    # call subcmd
    args.fun(args)
    

    使用帮助
    # python args_subparse.py -h
    usage: args_subparse.py [-h] {create,list,delete} ...

    positional arguments:
      {create,list,delete}  commands
        list                Listcontents
        create              Create a directory
        delete              Remove a directory

    optional arguments:
      -h, --help            show this help message and exit
      
    # python args_subparse.py create -h
    usage: args_subparse.py create [-h] [--read-only] dirname

    positional arguments:
      dirname      New directoryto create

    optional arguments:
      -h, --help   show this help message and exit
      --read-only  Setpermissions to prevent writing to the directory
      
    # python args_subparse.py delete -h
    usage: args_subparse.py delete [-h] [--recursive] dirname

    positional arguments:
      dirname          The directory to remove

    optional arguments:
      -h, --help       show this help message and exit
      --recursive, -r  Remove thecontents of the directory, too
     
    # python args_subparse.py list -h
    usage: args_subparse.py list [-h] dirname

    positional arguments:
      dirname     Directory tolist

    optional arguments:
      -h, --help  show this help message and exit


    多个subparser 使用同样定义的参数
    # add_help=False,必须指定,否则报-h重复定义
    parents_parser = argparse.ArgumentParser(add_help=False)
    parents_parser.add_argument('--foo', dest="foo", action='store_true')
    parents_parser.add_argument('--bar', dest="bar", action='store_false')
    parents_parser.add_argument('--baz', dest="baz", action='store_false')

    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(help='commands')
    m_parser = subparsers.add_parser("mysql", parents=[parents_parser], help="mysql method")
    m_parser.set_defaults(func=sub_mysql)
    o_parser = subparsers.add_parser("oracle", parents=[parents_parser], help="oracle method")
    o_parser.set_defaults(func=sub_oracle)
    args = parser.parse_args()



    参考
    http://blog.csdn.net/songuooo/article/details/8373086
    http://www.2cto.com/kf/201208/149418.html
    http://stackoverflow.com/questions/7498595/python-argparse-add-argument-to-multiple-subparsers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值