前文以计算长方形的面积为例,分别建立并调用Rec_S.py和Rec_S_arg.py两个文件,对比说明了argparse的基本使用,本文在前文的基础上继续介绍argparse的一些使用。
import argparse
parse = argparse.ArgumentParser(description= '计算长方形面积') # 创建并描述容器parse的功能
parse.add_argument('-A','--a', type=int, help='长方形的长(a)') # -A为变量名称,后面调用时可以任意设置其取值
parse.add_argument('-B','--b', type=int, help='长方形的宽(b)') # --b为给容器添加的参数名称
args = parse.parse_args()
def Rec_S_arg(a,b):
s = a * b
return s
if __name__ == '__main__':
print(Rec_S_arg(args.a,args.b))
通过添加’-A’,‘-B’,在调用Rec_S_arg.py时可以随意交换变量A和B的位置。
通过上图的帮助文档调用结果,我们可以看到帮助文档的内容稍微有些冗余,下面通过设置metavar=''来精简一下帮助文档。
parse.add_argument('-A','--a', type=int,metavar='', help='长方形的长(a)')
parse.add_argument('-B','--b', type=int,metavar='', help='长方形的宽(b)')
当忘记输入A的取值,在jupyter notebook里调用Rec_S_arg.py时出现报错如下:
在这种情况下,可以通过设置required=true来进行报错提示。
parse.add_argument('-A','--a', type=int,metavar='', required=True, help='长方形的长(a)')
parse.add_argument('-B','--b', type=int,metavar='', required=True, help='长方形的宽(b)')
# 计算长方形(Rectangle)的面积(添加argparse模块)
"""
输入长方形的长(a)和宽(b),返回面积(s)
s = a * b
"""
import argparse
from argparse import Namespace
parse = argparse.ArgumentParser(description= '计算长方形面积') # 创建并描述容器parse的功能
parse.add_argument('-A','--a', type=int,metavar='', required=True, help='长方形的长(a)') # A\B为变量名称,后面调用时可以任意设置其取值
parse.add_argument('-B','--b', type=int,metavar='', required=True, help='长方形的宽(b)') # a\b为给容器添加的参数名称
# args = parse.parse_args()
# 添加互斥组并设置quiet和verbose参数
"""
当调用q时,只输出面积值
当调用v时,输出长、宽及面积值及其描述
不调用互斥参数时,输出面积值及其描述
"""
group = parse.add_mutually_exclusive_group()
group.add_argument('-q', '--quiet', action='store_true', help='只输出面积值')
group.add_argument('-v', '--verbose', action='store_true', help='输出长、宽及面积值及其描述')
args = parse.parse_args()
def Rec_S_arg(a,b):
s = a * b
return s
if __name__ == '__main__':
s = Rec_S_arg(args.a, args.b)
if args.quiet:
print(s)
elif args.verbose:
print('长方形的长为 %s ,长方形的宽为 %s,长方形的面积为 %s'% (args.a, args.b, s))
else:
print('长方形的面积为 %s' %s)