argparse module
本文最后更新于151 天前,其中的信息可能已经过时,如有错误请发送邮件到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 具体使用方法:

  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作为参数传到方法中得出结果

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}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇