本文最后更新于152 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
argparsem模块
在学习深度学习代码时看待文件里大量使用到argparse这个模块,所以学习以下这个模块的使用。
argparse模块是命令行选项、参数和子命令解析器,可以在命令行输入参数,直接执行,而不必去修改源代码
1 Example:
"""
@Author: LiJie
@FileName: argparse_test.py
@DateTime: 2024/7/27 下午9:01
"""
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 argparse_test.py 1 3
,则指定半径为1,高为3的输入
2 具体使用方法:
- 首先导入argparse模块import argparse
- 创建一个 ArgumentParser 对象,该对象包含将命令行输入内容解析成 Python 数据的过程所需的全部功能。description是该对象的描述信息,可使用
python test_argparse.py -h
命令查看
parser = argparse.ArgumentParser(description='Calculate volume of a cylinder') - 添加需要输入的命令行参数
parser.add_argument('radius', type=int, help='Radius of cylinder')
()中依次为参数名;参数类型,声明这个参数的数据类型为int为了参与运算,默认数据类型为str;描述信息 - args = parser.parse_args() ArgumentParser 通过 parse_args() 方法解析参数,获取到命令行中输入的参数。
- 将获取到的半径和高度args.radius,args.height作为参数传到方法中得出结果
3 其他用法
3.1 使用python test_argparse.py -h
查看对象信息
(AudioClassification) PS F:\huan_cun_he_xia_zai\Code_save\AudioClassification-Pytorch\testFiles> python .\argparse_test.py -h
usage: argparse_test.py [-h] radius height
Calculate volume of a cylinder
positional arguments:
radius Radius of cylinder
height Height of cylinder
options:
-h, --help show this help message and exit
3.2 使用选择型参数
如果想改变输入的顺序或在输入参数同时携带参数名,可以使用选择型参数,在添加参数时参数名前加两个"-"
example: parser.add_argument('--radius', type=int, help='Radius of cylinder')
(AudioClassification) PS F:\huan_cun_he_xia_zai\Code_save\AudioClassification-Pytorch\testFiles> python .\argparse_test.py --radius 1 --height 3
9.42477796076938
(AudioClassification) PS F:\huan_cun_he_xia_zai\Code_save\AudioClassification-Pytorch\testFiles> python .\argparse_test.py --height 3 --radius 1
9.42477796076938
如上所示,改变输入顺序依旧可以正常使用,不会产生歧义
还有一种方法,通过“-”加上参数别名的形式,注意被"–"修饰的参数名必须存在:
parser.add_argument('-r', '--radius', type=int, help='Radius of cylinder')
parser.add_argument('-H', '--height', type=int, help='Height of cylinder')
执行命令:
(AudioClassification) PS F:\huan_cun_he_xia_zai\Code_save\AudioClassification-Pytorch\testFiles> python .\argparse_test.py -H 3 -r 1
9.42477796076938
这里注意不要使用-h
,这是一个特殊的命令,使用会产生冲突
3.3 参数别名
可以通过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')
3.4 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')
3.5 通过vars()将args转化成字典形式查看具体内容 print(vars(args))
(AudioClassification) PS F:\huan_cun_he_xia_zai\Code_save\AudioClassification-Pytorch\testFiles> python .\argparse_test.py -H 3 -r 1
9.42477796076938
{'radius': 1, 'height': 3}