一、使用argparse定义命令行步骤
1.创建解析器
parser=argparse.ArgumentParser(description='Process some intergers.')
2.添加参数
parser.add_argument('integers', metavar='N', type=int, nargs='+', help = 'an integer for the accumulator')
3.参数使用
print parser.integers
二、解析器的使用说明
解析器中所使用到的参数,都是可选参数。
#创建解析器
argparse.ArgumentParser(prog=None,usage=None,description=None,epilog=None,version=None,parents=[],formatter_class=HelpFormatter,prefix_chars='-',fromfile_prefix_chars=None,argument_default=None,conflict_handler='error',add_help=True):
#可选参数
prog -- 程序的名称(默认: sys.argv[0],prog猜测是programma的缩写)
usage --描述程序用途的字符串(默认值:从添加到解析器的参数生成)
description -- 在参数帮助文档之后显示的文本 (默认值:无)
epilog -- 参数描述后面的文本
parents -- 应该将其参数复制到此解析器中的解析器
formatter_class -- 用于打印帮助消息的HelpFormatter类
prefix_chars --作为可选参数前缀的字符
fromfile_prefix_chars --作为包含附加参数的文件的前缀的字符
argument_default -- 所有参数的默认值
conflict_handler -- 指示如何处理冲突的字符串
add_help -- Add a -h/-help option
三、添加命令行参数使用选项说明
#添加参数命令
parser.add_argument(属性)
#可选属性
第一个参数(即以--开头的字符串):代表的是命令行该参数显示的名称。
type:参数的类型,会将输入的参数做一个验证,并返回值。值有convert_to_uppercase、convert_to_lowercase、str2bool、str2dict、str2dict_type。
nargs:该参数输入的值,将会返回一个列表。
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)
default:指定默认值
choices:指定选择项
required:是否为必选项
metavar:使用帮助中的名称
action:是解析器的基类,典型的值为:
'store_true':此项的值为True
'store_false':此项的值为False
'append':将输入的值,返回一个列表。该参数可以被多次录入,譬如: --name name1 --name name2 #输出为['name1', 'name2']
1.多个值中选择一个
#file name:zpp.py
import argparse
from neutronclient.common import utils
parser = argparse.ArgumentParser()
parser.add_argument('--num', choices=['1', '2', '3'])
p=parser.parse_args()
print p.num
#python zpp.py --num 1
2.多个值中选择多个
#file name:zpp.py
import argparse
from neutronclient.common import utils
parser = argparse.ArgumentParser()
parser.add_argument('--num', action='append', choices=['1', '2', '3'])
p=parser.parse_args()
print p.num
[root@controller ~]# python zpp.py --num 1 --num 2
['1', '2']
3.多值返回列表
#file name: zpp.py
import argparse
from neutronclient.common import utils
parser = argparse.ArgumentParser()
parser.add_argument('--num', nargs='+')
p=parser.parse_args()
print p.num
[root@controller ~]# python zpp.py --num 1 2 3 4 5
['1', '2', '3', '4', '5']
4.返回一个字典类型的值
#file name:zpp.py
import argparse
from neutronclient.common import utils
parser = argparse.ArgumentParser()
parser.add_argument('--num', type=utils.str2dict_type(required_keys=['start', 'end']))
p=parser.parse_args()
print p.num
[root@controller ~]# python zpp.py --num start=1,end=5
{'start': '1', 'end': '5'}
5.返回一个复合类型[{}, {}]
#file name: zpp.py
import argparse
from neutronclient.common import utils
parser = argparse.ArgumentParser()
parser.add_argument('--num', nargs='*', type=utils.str2dict_type(required_keys=['start', 'end']))
p=parser.parse_args()
print p.num
[root@controller ~]# python zpp.py --num start=1,end=5 start=10,end=20 start=30,end=40
[{'start': '1', 'end': '5'}, {'start': '10', 'end': '20'}, {'start': '30', 'end': '40'}]
6.添加互斥选项
#file name:zpp.py
import argparse
from neutronclient.common import utils
parser = argparse.ArgumentParser()
args = parser.add_mutually_exclusive_group()
args.add_argument('--route')
args.add_argument('--no_route')
p=parser.parse_args()
print p.route
print p.no_route
[root@controller ~]# python zpp.py --no_route 22
None
22