argparse模块(详解)

一、argparse模块

argparse 是 Python 标准库中用于解析命令行参数的模块。提供了一种简单而灵活的方式来处理命令行输入,并帮助用户构建具有参数选项和帮助信息的命令行界面。

argparse 模块的主要组成部分:

  • (1)创建 ArgumentParser 对象:用于创建命令行解析器对象。如:定义程序可以接受的命令行参数,并设置参数的名称、类型、默认值和帮助信息等。
  • (2)使用 add_argument() 方法:向解析器中添加命令行参数及其相关的属性如参数名称、缩写、类型、默认值、帮助信息等。
  • (3)调用 parse_args() 方法:解析命令行参数,该方法会返回一个命名空间对象,其包含了解析后的参数及其对应的值。该方法会自动根据定义的参数规则解析命令行输入,并将参数值存储在命名空间对象中供程序使用。
  • (4)使用命名空间对象中的属性,获取命令行参数的值

以上四步最难的是 add_argument() 方法,因为它有好多参数,且刚开始不太容易理解 。

import argparse                                     # 导入argparse模块

if __name__ == "__main__":
    parser = argparse.ArgumentParser()              # 创建命令行解析对象
    parser.add_argument('--epochs', default="1")    # 添加命令行参数和选项
    args = parser.parse_args()                      # 解析命令行参数
    epochs = args.epochs                            # 获取命令行参数
    
    print("epochs =", epochs)                       # 输出结果:epochs = 1

(1)创建命令行解析对象:parser = argparse.ArgumentParser()

"""####################################################################################################################
# 函数功能:用于创建一个命令行参数解析器的对象。
# 函数说明:argparse.ArgumentParser([prog=None, usage=None, description=None, epilog=None,
#                                  formatter_class=argparse.HelpFormatter,  prefix_chars='-',
#                                  fromfile_prefix_chars=None, argument_default=None,
#                                  conflict_handler='error', add_help=True, allow_abbrev=True])
# 参数说明:
#         - prog:                   程序的名称
#         - usage:                  用法说明
#         - description:            描述参数作用的文字
#         - epilog:                 描述参数作用的结尾文字
#         - formatter_class:        自定义帮助信息输出格式
#         - prefix_chars:           用于标识可选参数的前缀字符
#         - fromfile_prefix_chars:  用于从文件中读取参数的前缀字符
#         - argument_default:       参数的默认值
#         - conflict_handler:       解决参数冲突的方式
#         - add_help:               是否自动添加'-h'和'--help'选项来显示帮助信息
#         - allow_abbrev:           是否允许参数缩写
####################################################################################################################"""

(2)添加命令行参数和选项:parser.add_argument()

python argparse模块的各参数解析和使用

"""####################################################################################################################
# 函数功能:向命令行参数解析器中添加命令行参数。
# 函数说明:parser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
# 参数说明:
        - name or flags:    命令行参数的名称或标志,可以是一个字符串或一个包含多个字符串的列表。例如 foo 或 -f, --foo。
                (1)位置参数: 直接输入一个字符串,代表位置参数,是必传值。
                (2)命令标志: 在字符串前加一个短横线(-),在命令中表示该参数。
                (3)可选参数: 在字符串前加两个短横线(--),在命令行中代表可选参数,可输入也可不输入。

        - action:           指定命令行参数的动作,默认为'store'。将命令行参数值存储到相应的参数名中。
                (1)'store':存储参数值。
                (2)'store_const':存储常量值。
                (3)'store_true':存储True值。
                (4)'store_false':存储False值。
                (5)'append':将参数值添加到列表中。
                (6)'append_const':将常量值添加到列表中。
                (7)'count':计算参数出现的次数,存储到参数名中。
                (8)'help':显示帮助信息并退出。

        - nargs:            命令行参数的数量,默认为None。
        - const:            常量值,用于一些特殊的动作,默认为None。
        - default:          命令行参数的默认值,默认为None。
        - type:             命令行参数的数据类型,默认为None。
                (1)int:整数。
                (2)float:浮点数。
                (3)str:字符串。
                (4)bool:布尔值。
        
        - choices:          命令行参数允许的值的列表,默认为None。
        - required:         命令行参数是否为必选,默认为False。
        - help:             命令行参数的帮助文本,默认为None。
        - metavar:          命令行参数在帮助文本中的名称,默认为None。
        - dest:             命令行参数存储在解析结果中的属性名称,默认为None。
        		(1)默认情况下,参数名称与属性名称相同。
        		(2)若指定dest,则使用dest指定的参数名称作为属性名称。
####################################################################################################################"""

(3)解析命令行参数:args = parser.parse_args()

  • 函数功能:根据 parser.add_argument() 添加的参数信息,来解析命令行参数。
  • 输出参数:返回一个命名空间对象,其中包含了解析后的参数及其对应的值。

(4)获取命令行参数:epochs = args.epochs

  • 代码功能:通过命名空间对象访问相应的属性,以获取参数的值。
  • 代码详解:通过 args.epochs 获取了命令行参数 --epochs 的值,并将其赋值给了变量 epochs。然后可以使用 epochs 变量来访问参数值,以完成后续的操作。

二、项目实战

使用命令行指令调用脚本python main_11.py --model /path/to/model.cfg --weights /path/to/weights.weights --data /path/to/data.data
在这里插入图片描述

import argparse

parser = argparse.ArgumentParser(description="Evaluate validation data.")

parser.add_argument("-m", "--model", type=str, default="../model/yolo_v3.cfg", help="Path to model")
parser.add_argument("-w", "--weights", type=str, default="../weights/yolo_v3.weights", help="Path to weights")
parser.add_argument("-d", "--data", dest='Data', type=str, default="../data/coco.data", help="Path to data")

args = parser.parse_args()
print(f"arguments: {args}")
print(f"model = {args.model}")
print(f"weights = {args.weights}")
print(f"data = {args.Data}")  # 由于指定了dest,故命令行参数 --data 被解析后存储在dest指定的参数名称 args.Data 中。

"""
arguments: Namespace(model='../model/yolo_v3.cfg', weights='../weights/yolo_v3.weights', Data='../data/coco.data')

model   = ../model/yolo_v3.cfg
weights = ../weights/yolo_v3.weights
data    = ../data/coco.data
"""

# "../model/yolo_v3.cfg"   :表示文件位于当前工作目录的父目录的 model 子目录中,文件名为 yolo_v3.cfg。
# "./model/yolo_v3.cfg"    :表示文件位于当前工作目录的 model 子目录中,文件名为 yolo_v3.cfg。
# "/model/yolo_v3.cfg"     :表示文件位于根目录的 model 子目录中,文件名为 yolo_v3.cfg。

  • 22
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖墩会武术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值