argparse模块(详解)

news2024/12/22 23:10:05

文章目录

  • 一、argparse模块
    • (1)创建命令行解析对象:parser = argparse.ArgumentParser()
    • (2)添加命令行参数和选项:parser.add_argument()
    • (3)解析命令行参数:args = parser.parse_args()
    • (4)获取命令行参数:epochs = args.epochs
  • 二、项目实战

一、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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1615524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

就业班 第三阶段(nginx) 2401--4.22 day1 nginx1 http+nginx初识+配置+虚拟主机

一、HTTP 介绍 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件…

Web3钱包开发获取测试币-Polygon Mumbai(一)

Web3钱包开发获取测试币-Polygon Mumbai(一) 由于主网区块链上的智能合约需要真正的代币,而部署和使用需要花费真金白银,因此测试网络为 Web3 开发人员提供了一个测试环境,用于部署和测试他们的智能合约,以识别和修复在将智能合约…

❤️新版Linux零基础快速入门到精通——第三部分❤️

❤️新版Linux零基础快速入门到精通——第三部分❤️ 非科班的我!Ta!还是来了~~~3. Linux权限管控3.1 认知root用户3.1.1 Switch User——su3.1.2 sudo命令3.1.3 为普通用户配置sudo认证 3.2 用户和用户组3.2.1 用户、用户组3.2.2 用户组管理3.2.3 用户管…

辽宁梵宁教育设计培训:赋能大学生,新技能学习再升级

辽宁梵宁教育设计培训:赋能大学生,新技能学习再升级 在当今这个日新月异、信息爆炸的时代,大学生们面临着前所未有的挑战与机遇。为了帮助他们更好地适应社会的快速变化,提升个人的综合素质和竞争力,辽宁梵宁教育设计…

基于python实现的医疗领域用户问答的意图识别算法研究(django)

基于python实现的医疗领域用户问答的意图识别算法研究(django) 开发语言:Python语言 数据库:MySQL,Neo4j知识:深度学习,知识图谱工具:pycharm、Navicat、Maven 系统的实现 系统登录界面 医疗领域用户问答…

华媒舍:百度竞价排名如何提升点击率

在网络推广中,提升点击率是十分重要的。运用百度搜索引擎广告是一种常用的提升点击率的形式。而百度竞价推广是搜索引擎所提供的一种付费流量方法,根据提高网站在搜索结果中的排名,可以有效提升点击率。下面我们就详细介绍如何运用百度竞价推…

钢管钢材地板踢脚线定购规格采购批发商城h5公众号开发

钢管钢材地板踢脚线定购规格采购批发商城h5公众号开发 商品管理,订单管理,用户管理,售后管理,商品评价,虚拟商品自动发货,优惠劵,购物送劵。 您可以在这个H5公众号商城上找到以下功能列表&…

flink Unsupported operand types: IF(boolean, NULL, String)

问题:业务方存储了NULL 字符串,需要处理为 null select if(anull,null,a); 结果遇到了 Unsupported operand types: IF(boolean, NULL, String),根据报错反馈,很明显应该是没有对 null 自动转换&#xff…

Day39 网络编程(一):计算机网络,网络编程,网络模型,网络编程三要素

Day39 网络编程(一):计算机网络,网络编程,网络模型,网络编程三要素 文章目录 Day39 网络编程(一):计算机网络,网络编程,网络模型,网络…

JAVA学习笔记28(常用类)

1.常用类 1.1 包装类 1.包装类的分类 ​ 1.针对八中基本数据类型相应的引用类型–包装类 ​ 2.有了类的特点,就可以调用类中的方法 2.包装类和基本数据类型的转换 ​ *装箱:基本类型 --> 包装类型 //手动装箱 int n1 100; Integer integer ne…

Web3钱包开发获取测试币-Base Sepolia(二)

Web3钱包开发获取测试币-Base Sepolia(二) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b0c0ac86b04a496087471388532bc54a.png) 基于上篇 Web3钱包开发获取测试币-Polygon Mumbai(一) :https://suwu150.blog.csdn.net/article/details/137949473 我…

Centos7.9云计算CloudStack4.15 高级网络配置(3)

上两章的文章都是用的CloudStack的基本网络,这一篇我们来介绍CloudStack的高级网络,这里虚拟机用的是自己配置的内部网络,通过nat方式到物理网络。按照第一篇的文章,安装管理服务器和计算服务器。 并且在管理服务器配置好如下的全…

“EDM邮件营销”如何构建企业获客增长新赛道

在这个瞬息万变的数字时代,企业的营销策略不断进化,以求在激烈的市场竞争中脱颖而出。其中,“EDM(Electronic Direct Mail)邮件营销”作为一项经典且高效的营销手段,正借助先进的技术力量,重新焕…

20232937文兆宇 2023-2024-2 《网络攻防实践》实践六报告

20232937文兆宇 2023-2024-2 《网络攻防实践》实践六报告 1.实践内容 (1)动手实践Metasploit windows attacker 任务:使用metasploit软件进行windows远程渗透统计实验 具体任务内容:使用windows Attacker/BT4攻击机尝试对wind…

一篇文章带您了解面向对象(java)

1.简单理解面向过程编程和面向对象编程 面向过程编程:开发一个一个的方法,有数据需要处理,我们就可以调用方法来处理。 package com.web.quictstart;public class demo1 {public static void main(String[] args) {totalScore("张三&q…

05 JavaScript学习:语法

JavaScript 是一种动态类型的脚本语言,广泛用于网页开发和构建交互式网页。JavaScript 的语法相对简单,但功能强大,它可以在客户端执行,并与HTML和CSS一起构建交互式的网页。 JavaScript 字面量 在 JavaScript 中,字…

CUDA编程---线程束洗牌指令

从Kepler系列的GPU(计算能力为3.0或更高)开始,洗牌指令(shuffle instruction)作为一种机制被加入其中,只要两个线程在相同的线程束中,那么就允许这两个线程直接读取另一个线程的寄存器。 洗牌指…

实验 3--表的基本操作与数据查询

文章目录 实验 3--表的基本操作与数据查询4.3.1 实验目的4.3.2 实验准备实验内容1.在 SSMS 中向数据库 YGKQ 中的表插入数据。2.使用 T-SQL 语句向 YGKQ 中的表插入数据。3.在 SSMS 中删除数据库 YGKQ 中的表数据。4.使用 T-SQL 语句删除数据库 YGKQ中的表数据。5.在 SSMS 中修…

高级IO和5种IO模型

目录 1. 高级IO1.1 IO的基本概念1.2 OS如何得知外设当中有数据可读取1.3 OS如何处理从网卡中读取到的数据包1.4 IO的步骤 2. 五种IO模型2.1 利用钓鱼来理解2.2 阻塞IO2.3 非阻塞IO2.4 信号驱动IO2.5 IO多路转接2.6 异步IO 3. 高级IO的概念3.1 同步通信 VS 异步通信3.2 阻塞 VS …

《C语言深度解剖》(9):深度剖析数据在内存中的存储

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&am…