python argparse模块的使用(2)

前文以计算长方形的面积为例,分别建立并调用Rec_S.py和Rec_S_arg.py两个文件,对比说明了argparse的基本使用,本文在前文的基础上继续介绍argparse的一些使用。

1. 添加变量名称,进一步方便调整变量取值

(1)Rec_S_arg.py文件代码

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))

(2)在jupyter notebook里调用Rec_S_arg.py

通过添加’-A’,‘-B’,在调用Rec_S_arg.py时可以随意交换变量A和B的位置。
python argparse模块的使用(2)_第1张图片
通过上图的帮助文档调用结果,我们可以看到帮助文档的内容稍微有些冗余,下面通过设置metavar=''来精简一下帮助文档。

2. 使用metavar参数,简化命令行描述

(1)Rec_S_arg.py文件代码(仅展示了修改部分)

parse.add_argument('-A','--a', type=int,metavar='', help='长方形的长(a)') 
parse.add_argument('-B','--b', type=int,metavar='', help='长方形的宽(b)')

(2)在jupyter notebook里调用Rec_S_arg.py

python argparse模块的使用(2)_第2张图片

3. 使用required参数,避免计算错误

当忘记输入A的取值,在jupyter notebook里调用Rec_S_arg.py时出现报错如下:
python argparse模块的使用(2)_第3张图片
在这种情况下,可以通过设置required=true来进行报错提示。

(1)Rec_S_arg.py文件代码(仅展示了修改部分)

parse.add_argument('-A','--a', type=int,metavar='', required=True, help='长方形的长(a)') 
parse.add_argument('-B','--b', type=int,metavar='', required=True, help='长方形的宽(b)')

(2)在jupyter notebook里调用Rec_S_arg.py

python argparse模块的使用(2)_第4张图片

4. 互斥组参数的使用

(1)Rec_S_arg.py文件代码

# 计算长方形(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)

(2)在jupyter notebook里调用Rec_S_arg.py

python argparse模块的使用(2)_第5张图片

你可能感兴趣的:(python)