您的位置:首页 > 编程语言 > Python开发

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

2016-04-13 11:24 826 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: