python之argparse模块常见用法包含实例(超详细)

相信很多刚开始学习深度学习算法代码的小伙伴,在一开始总会遇到关于argparse模块的代码,网上关于这方面的文章有很多但新手入门往往不是那么容易。本文从一个计算圆柱体体积的实例出发,帮助大家理解关于argparse模块的一些常见用法。

点击查看官方参考文档

1.介绍

argparse模块是命令行选项、参数和子命令解析器。可以让人轻松编写用户友好的命令行接口。适用于代码需要频繁地修改参数的情况。
先看下面一段没有使用argparse的代码

import math  # 为了获取π
def cylinder_volume(radius, height):
    vol = (math.pi) * (radius**2) * (height)  # 体积公式
    return vol
if __name__ == '__main__':
    print(cylinder_volume(1, 3))

运行结果
由以上可知,如果要计算其它圆柱体的体积,还需要在代码中修改半径和高度的参数。如果代码的规模很大,修改参数的过程会困难,不妨将这些需要频繁修改的参数放到代码外部,在命令行运行程序的时候一起输入,就用到了argparse模块。以下为修改后的代码

import math
import argparse  # 导入argparse模块
# 用来装载参数的容器
parser = argparse.ArgumentParser(description='Calculate volume of a cylinder')
# 给这个解析对象添加命令行参数
parser.add_argument('radius', type=int, help='Radius of cylinder')
parser.add_argument('height', type=int, help='Height of cylinder')
args = parser.parse_args()  # 获取所有参数
def cylinder_volume(radius, height):
    vol = (math.pi) * (radius**2) * (height)
    return vol
if __name__ == '__main__':
    print(cylinder_volume(args.radius, args.height))

运行结果
在运行代码python test_argparse.py后输入参数半径1和高度3,这样就能在不修改代码的前提下得到想要的结果

2.用法

2.1以下为上面代码的详细解释

1)首先导入argparse模块import argparse
2)创建一个 ArgumentParser 对象,该对象包含将命令行输入内容解析成 Python 数据的过程所需的全部功能。description是该对象的描述信息,可使用python test_argparse.py -h命令查看
parser = argparse.ArgumentParser(description='Calculate volume of a cylinder')
3)添加需要输入的命令行参数
parser.add_argument('radius', type=int, help='Radius of cylinder')
()中依次为参数名;参数类型,声明这个参数的数据类型为int为了参与运算,默认数据类型为str;描述信息
4)args = parser.parse_args() ArgumentParser 通过 parse_args() 方法解析参数,获取到命令行中输入的参数。
5)将获取到的半径和高度args.radius, args.height作为参数传到方法中得出结果

2.2 通过添加-h参数查看描述信息

运行结果

2.3 使用选择型参数

python test_argparse.py 1 3

以上输入必须半径1在前,高度3在后,如果想改变输入的顺序或在输入参数同时携带参数名,可以使用选择型参数,在添加参数时参数名前加两个"-"
parser.add_argument('--radius', type=int, help='Radius of cylinder')
结果
还有一种方法,通过“-”加上参数别名的形式,注意被"–"修饰的参数名必须存在:

parser.add_argument('-r', '--radius', type=int, help='Radius of cylinder')
parser.add_argument('-H', '--height', type=int, help='Height of cylinder')

在这里插入图片描述

2.4 metavar属性

首先通过-h查看描述信息
在这里插入图片描述
在添加参数那步增加metavar属性,设置为空字符串

parser.add_argument('-r', '--radius', type=int, metavar='', help='Radius of cylinder')
parser.add_argument('-H', '--height', type=int, metavar='', help='Height of cylinder')

在这里插入图片描述
执行-h,结果和上面对比
将metavar属性设置为其它字符串,运行结果为
在这里插入图片描述
找不同,很简单

2.5 required属性

在添加参数那步可以自选添加required属性,在命令行输入的过程中如果你只具体指定了某几个参数,还有其它参数的值没有指定,也许可以运行完程序,那个没有被具体指定值的参数会被赋None值。required属性要求该参数必须被赋值,否则报错

parser.add_argument('-r', '--radius', type=int, metavar='', required=True, help='Radius of cylinder')
parser.add_argument('-H', '--height', type=int, metavar='', required=True, help='Height of cylinder')
2.6 dest属性

可以通过dest=xxx来设置参数的变量名取代“–xxx”,同样地在代码中用args.xxx来获取参数的值。

parser.add_argument('-r', dest='radius', type=int, help='Radius of cylinder')
parser.add_argument('-H', dest='height', type=int, help='Height of cylinder')
2.7 使用互斥参数

参考代码中的注释和运行结果

import math
import argparse
parser = argparse.ArgumentParser(description='Calculate volume of a cylinder')
parser.add_argument('-r', '--radius', type=int, metavar='', required=True, help='Radius of cylinder')
parser.add_argument('-H', '--height', type=int, metavar='', required=True, help='Height of cylinder')
# 添加互斥组
group = parser.add_mutually_exclusive_group()
# 给互斥组添加两个参数
# 给参数的action属性赋值store_true,程序默认为false,当你执行这个命令的时候,默认值被激活成True
group.add_argument('-q', '--quiet', action='store_true', help='Print quiet')
group.add_argument('-v', '--verbose', action='store_true', help='Print verbose')
args = parser.parse_args()
def cylinder_volume(radius, height):
    vol = (math.pi) * (radius**2) * (height)  # 体积公式
    return vol
if __name__ == '__main__':
    volume = cylinder_volume(args.radius, args.height)
    # 互斥参数
    if args.quiet:
        print(volume)
    elif args.verbose:
        print('Volume of a Cylinder with radius %s and height %s is %s' % (args.radius, args.height, volume))
    else:
        print('Volume of Cylinder = %s' % volume)
    # 这就是互斥参数如何工作的,你不能同时执行两个命令,你可以执行一个,所以和互斥组里的两个参数交互时,你只能
    # 执行quiet和verbose中的一个,或者是都不执行按照默认计划来
    # 使用: python test_argparse.py  -r 2 -H 4
    #       python test_argparse.py  -r 2 -H 4 -v
    #       python test_argparse.py  -r 2 -H 4 -q

运行结果:
在这里插入图片描述

  • 156
    点赞
  • 264
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: argparsePython标准库中的一个命令行解析模块。它可以自动生成帮助和使用信息,并且支持默认值、可选参数、位置参数等。 下面是一个简单的使用argparse的例子: ```python import argparse parser = argparse.ArgumentParser(description='A simple argparse example') parser.add_argument('-n', '--name', type=str, help='Your name') parser.add_argument('-a', '--age', type=int, help='Your age') args = parser.parse_args() print('Hello,', args.name, 'your age is', args.age) ``` 运行上面的代码后,可以通过命令行来传入参数,如: ``` python test.py -n John -a 30 ``` 这样就能在程序中得到参数name和age的值,输出: ``` Hello, John your age is 30 ``` argparse模块还支持其他选项,如添加默认值、设置参数为可选或必选等,详见官方文档。 ### 回答2: argparsePython中的一个命令行参数解析模块。它可以用来解析命令行参数以及生成用于帮助文档的用户友好的提示信息。 使用argparse模块可以轻松定义和解析命令行参数。下面是一个argparse的简单实例: 假设我们要编写一个程序来计算两个数字的和。我们希望能够从命令行传递这两个数字作为参数,并且能够选择是否将计算结果打印出来。 首先,我们需要导入argparse模块,然后创建一个ArgumentParser对象: import argparse parser = argparse.ArgumentParser() 然后,我们可以使用add_argument()方法来定义我们需要的参数: parser.add_argument("num1", type=int, help="第一个数字") parser.add_argument("num2", type=int, help="第二个数字") parser.add_argument("-p", "--print", action="store_true", help="打印计算结果") 在这个例子中,我们使用add_argument()方法定义了两个位置参数num1和num2,分别表示第一个数字和第二个数字。我们还使用了一个可选参数--print(简写为-p),用来表示是否打印计算结果。action="store_true"表示如果命令行中指定了--print参数,则将其存储为True,否则为False。 接下来,我们需要使用parse_args()方法来解析命令行参数: args = parser.parse_args() 现在,我们可以使用args对象来访问用户输入的参数了: sum_result = args.num1 + args.num2 if args.print: print("计算结果:", sum_result) 最后,我们可以将上述代码保存为一个Python脚本文件,然后在命令行中运行该文件,并传递两个数字和可选的--print参数来测试程序的功能,例如: python calculator.py 2 3 --print 以上就是argparse模块的解析和实例的简单介绍。这个模块非常灵活和强大,可以用于处理各种类型的命令行参数,包括位置参数、可选参数、默认值等等。它还可以生成用户友好的帮助文档,以方便用户使用程序。 ### 回答3: Pythonargparse模块是一个用于解析命令行参数的库。它可以帮助我们在命令行中传递参数,并且提供了一些额外的功能,比如生成帮助信息和错误提示。 使用argparse模块非常简单。我们首先需要导入argparse库,然后创建一个ArgumentParser对象。然后,我们可以使用add_argument()方法来添加我们需要的命令行参数。 add_argument()方法有很多参数可以配置,比如name或flags指定参数的名称,type指定参数的类型,default指定参数的默认值等等。我们可以根据我们的具体需求来配置这些参数。 当命令行参数被定义后,我们可以通过parse_args()方法来解析命令行参数。这个方法会返回一个包含解析后的参数的命名空间对象,我们可以使用这个对象的属性来访问具体的参数值。 下面是一个使用argparse模块的简单示例: ```python import argparse # 创建ArgumentParser对象 parser = argparse.ArgumentParser(description='这是一个解析命令行参数的示例') # 添加命令行参数 parser.add_argument('name', type=str, help='你的名字') parser.add_argument('age', type=int, help='你的年龄') # 解析命令行参数 args = parser.parse_args() # 访问参数值 print('你好,{},你的年龄是{}岁。'.format(args.name, args.age)) ``` 在上面的示例中,我们创建了一个ArgumentParser对象,并添加了两个命令行参数:name和age。然后我们解析命令行参数,并使用args对象访问参数值并打印出来。 当我们在命令行中运行这个脚本时,我们需要在脚本名称后面提供两个参数,即我们的名字和年龄。比如: ``` $ python script.py Alice 25 ``` 这样,脚本就会打印出:`你好,Alice,你的年龄是25岁。`

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值