Argparse用法

基础使用

#导入命令行解析的库文件
import argparse

# 生成一个参数解析器对象,其中description后的内容为--help时出现的提示内容
parse = argparse.ArgumentParser(description="ArgumentParser description")
# 添加参数,没有加-时此参数为必须给定的参数,若代码执行时不给定则会报错
# error: the following arguments are required: name
parse.add_argument('name', help='your name')
# 除了增加-来变为不必须参数外,还可以通过增加nargs
parse.add_argument('sex', help='your sex', nargs='?')
# -a, --age表示同一个参数,注意当'-'和'--'同时出现的时候,系统默认后者为参数名(就是解析时要通过.age获得)
# 即会出现类似错误:'Namespace' object has no attribute 'a'
# default增加默认值,若未给定此值则使用默认值
parse.add_argument('-a', '--age', help='your age', default='18')
# 这里的参数action的作用是执行时存在此参数则为True,否则为False,使用时只需要指定--student即可,后面不要跟具体值
parse.add_argument('-s','--student',help='is a student',action='store_true')
# 若action为store_false效果刚好相反,执行时存在此参数则为False,否则为True,使用同上
# parse.add_argument('-s','--chinese',help='Im Chinese',action='store_false')
# 采用parse对象的parse_args获取解析的参数
# 接下来便可通过参数名来获取参数值
args = parse.parse_args()
# args为Namespace的示例,其中包含参数名与参数值
print(args)
# 不可使用上面没有添加的参数名,否则会报错此参数不存在
# 错误类似:AttributeError: 'Namespace' object has no attribute 'help'
print('Hello {},your age is {}'.format(args.name, args.age))

# 运行python3.6 test.py muyi --student
# 结果如下
Namespace(age='18', name='muyi', sex=None, student=True)
Hello muyi,your age is 18

互斥参数

#导入命令行解析的库文件
import argparse

# 生成一个参数解析器对象,其中description后的内容为--help时出现的提示内容
parse = argparse.ArgumentParser(description="ArgumentParser description")
# 单个参数按照上面正常使用
parse.add_argument('name',help='your name')
# 先要定义一个互斥的参数组 鱼与熊掌不可兼得
group = parse.add_mutually_exclusive_group()
# 同一组中的参数不可同时出现,最多只能出现一个,也可以都不出现
group.add_argument('-f','--fish',help='fish',action='store_true')
group.add_argument('-b','--bear',help='bear paw',action='store_true')
args = parse.parse_args()
# args为Namespace的示例,其中包含参数名与参数值
print(args)

# 运行python3.6 test.py muyi -f
Namespace(bear=False, fish=True, name='muyi')
# 运行python3.6 test.py muyi -b
Namespace(bear=True, fish=False, name='muyi')
# 运行python3.6 test.py muyi -f -b
# 报错如下
usage: test.py [-h] [-f | -b] name
test.py: error: argument -b/--bear: not allowed with argument -f/--fish

vars()函数

# vars() 函数返回对象object的属性和属性值的字典对象
# 使用时可以通过vars() 函数将Namespace转换为一个字典
#导入命令行解析的库文件
import argparse

parse = argparse.ArgumentParser(description="ArgumentParser description")
parse.add_argument('name', help='your name')
parse.add_argument('sex', help='your sex', nargs='?')
parse.add_argument('-a', '--age', help='your age', default='18')
parse.add_argument('-s','--student',help='is a student',action='store_true')
args = parse.parse_args()
#通过var()转换为字典对象
ret = vars(args)
print(type(ret))
print(ret)

# 运行python3.6 test.py muyi

{'name': 'muyi', 'sex': None, 'age': '18', 'student': False}

你可能感兴趣的:(Python)