python argparse 用法总结
深度学习中会经常用到Python的一些包,易学也容易忘记,网上很多的资源,学习后做一个简单的笔记,方便后续查找。
1.argparse介绍
pythonde的一个命令行解析包
2.基本用法
下面的文件保存为 argparse_test.py
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()
执行:python argparse_test.py
无输出和错误信息
执行:python argparse_test.py --help
输出:
执行:python argparse_test.py -v
输出:错误,未定义-v参数
3.positional arguments
定位参数,修改argparse_test.py为如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args=parser.parse_args()
print(args.echo)
执行:python argparse_test.py
- 不带参数测试,由于echo参数为空,报错
执行:python argparse_test.py -h
- 打印帮助信息,包括相关参数信息
执行:python argparse_test.py hhhhhhh
- 正常输入,回显输入的字符串
4.optional arguments
可选参数
- 一种是通过一个-来指定的短参数,如-h
- 一种是通过–来指定的长参数,–help
上述两者可以共存,也可以只使用一个:
修改上述代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v","--verbosity",help="increase output verbosity")
args=parser.parse_args()
if args.verbosity:
print("verbosity turned on")
执行:python argparse_test.py -v 1
执行:python argparse_test.py --verbosity 1
执行上述两条指定都输出:verbosity turned on
执行:python argparse_test.py -h
显示帮助信息
执行:python argparse_test.py -v
报错,未指定相关参数
5.action=‘store_true’
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v","--verbosity",help="increase output verbosity",action = "store_true")
parser.parse_args()
parser.add_argument("echo")
args=parser.parse_args()
if args.verbosity:
print("verbosity turned on")
执行:python argparse_test.py -v
执行:python argparse_test.py -v 1
得到相同的结果
6.类型Type
默认参数为str,可以通过type进行类型转换
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('x',type=int,help="the base")
args = parser.parse_args()
answer = args.x ** 2
print(answer)
7.可选值choice=[]
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v","--verbosity", type=int, choices=[0,1,2],
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity ==2:
print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity ==1:
print("{}^2 == {}".format(args.square, answer))
else:print (answer)
8.自定义帮助信息help
如上述程序,help=" "
9.程序用法帮助
通过argparse.ArgumentParser(description=“calculate X to the power of Y”)即可
import argparse
parser = argparse.ArgumentParser(description="calculate X to the power of Y")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v","--verbose", action="store_true")
group.add_argument("-q","--quiet", action="store_true")
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
args = parser.parse_args()
answer = args.x**args.y
if args.quiet:
print(answer)
elif args.verbose:
print("{} to the power {} equals {}".format(args.x, args.y, answer))
else:
print("{}^{} == {}".format(args.x, args.y, answer))
10.互斥参数
上述程序中定义互斥参数
group = parser.add_mutually_exclusive_group()
group.add_argument("-v","--verbose", action="store_true")
group.add_argument("-q","--quiet", action="store_true")
第1行定义互斥组,第2,3行在互斥组中添加了-v -q两个参数组。
-q和-v是互斥的两个参数,同时出现时回出错
11.默认参数
default参数设置
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v","--verbosity", type=int, choices=[0,1,2],default=1,
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity ==2:
print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity ==1:
print("{}^2 == {}".format(args.square, answer))
else:print (answer)