简介
argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
使用方法
- 导入argparse
- 创建ArgumentParser对象,可添加描述(description)信息,表明这个对象的功能
- 添加参数处理,可添加多个。
# print_name.py中代码
import argparse
def get_parser():
# 创建ArgumentParser对象,里面可以添加描述信息
parser = argparse.ArgumentParser(description="Demo of argparse")
# 添加参数处理
parser.add_argument('--name', default='Great')
return parser
if __name__ == '__main__':
parser = get_parser()
args = parser.parse_args()
name = args.name
print('name:%s' % name)
- 执行结果
$ python print_name.py --name lhx
name:lhx
参数解析
-
变量名:
- –name : 参数全名,需要加在参数上 如:python demo.py --name lhx
- -n:参数简称,可与–name同时存在
- ‘name’ 或者 dest=‘name’:参数名,提供参数占位符,必须填写,否则报错。如:python demo.py lhx
-
default参数:提供参数默认值
-
required:required=True表示这个参数必填,默认为False
-
type:参数类型,默认是str ,如果需要int ,type=int即可
-
choices:参数的值只能在几个选项中选择:
# file-name: choices.py
import argparse
def get_parser():
parser = argparse.ArgumentParser(
description='choices demo')
parser.add_argument('-arch', required=True, choices=['alexnet', 'vgg'])
return parser
if __name__ == '__main__':
parser = get_parser()
args = parser.parse_args()
print('the arch of CNN is '.format(args.arch))
- help:指定参数的说明信息,可使用-h(–help)查看该信息。
# file-name: help.py
import argparse
def get_parser():
parser = argparse.ArgumentParser(
description='help demo')
parser.add_argument('-arch', required=True, choices=['alexnet', 'vgg'],
help='the architecture of CNN, at this time we only support alexnet and vgg.')
return parser
if __name__ == '__main__':
parser = get_parser()
args = parser.parse_args()
print('the arch of CNN is '.format(args.arch))
$ python help.py -h
usage: help.py [-h] -arch {alexnet,vgg}
choices demo
optional arguments:
-h, --help show this help message and exit
-arch {alexnet,vgg} the architecture of CNN, at this time we only support
alexnet and vgg.
-
nargs:设置参数的个数
- 格式
parser.add_argument('-name', nargs=x)
- x的候选值以及含义
值 含义 N 参数的绝对个数(如:3) ‘?’ 0或1个参数 ‘*’ 0或多个参数 ‘+’ 1或者多个参数 - 举例
# file-name: nargs.py import argparse def get_parser(): parser = argparse.ArgumentParser( description='nargs demo') parser.add_argument('-name', required=True, nargs='+') return parser if __name__ == '__main__': parser = get_parser() args = parser.parse_args() names = ', '.join(args.name) print('Hello to {}'.format(names))
$ python nargs.py -name A B C Hello to A, B, C
-
metavar: 参数的名字,在显示 帮助信息时才用到.