【小知识】argparse --- 命令行选项、参数和子命令解析器详解

这篇具有很好参考价值的文章主要介绍了【小知识】argparse --- 命令行选项、参数和子命令解析器详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、argparse简介

argparse模块提供了非常方便的命令行参数解析功能,能够大大简化命令行程序的开发。
现在的大型项目中都会运用argparse来管理项目中涉及的参数,在使用命令行时更好地定义模型参数。


搜索得到的参数解释都不是很清楚所以做个总结。


argparse定义四个步骤:
1.导入argparse包 ——import argparse
2.创建一个命令行解析器对象 ——创建 ArgumentParser() 对象
3.给解析器添加命令行参数 ——调用add_argument() 方法添加参数
4.解析命令行的参数 ——使用 parse_args() 解析添加的参数

二、说明

1.参考示例

现有一个scratch.py的文件,使用命令行执行它。

import argparse

# 创建 ArgumentParser()对象
parser = argparse.ArgumentParser(description='Process some integers.')  # description简单说明命令行参数的作用

# 调用add_argument() 方法添加参数
parser.add_argument("dataset", help="discribe dataset")
parser.add_argument("--big", action="store_const", default=0, const=999, help="discribe big")

# 使用 parse_args() 解析添加的参数
args = parser.parse_args()

# 调用dataset参数
print(args.dataset)
# 输出coco

argparse,一些小知识的代码实现,源码,python,深度学习

2.add_argument参数

2.1 name_or_flags

name_or_flag参数是一个命名(参数名),例如 dataset -dataset, --dataset。如果同时传入-d--dataset,传参时任选一种即可。两者是等价的,只是在语法上稍有不同。当我们需要快速输入多个参数时,使用-d--dataset更快速。相当于-d--dataset的简写。

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')  # 
parser.add_argument("-d", "--dataset", help="discribe dataset")
args = parser.parse_args()
print(args.dataset)

argparse,一些小知识的代码实现,源码,python,深度学习
如果定义的是dataset,则表示位置参数,用户在命令行中输入参数时,需要按照定义时的顺序输入且不用输入参数名。如下所示,按照name、age顺序传入参数值。

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')  # 
parser.add_argument("name", help="discribe name")
parser.add_argument("age", help="discribe age")
args = parser.parse_args()
# 打印参数值
print(args.name,args.age)

argparse,一些小知识的代码实现,源码,python,深度学习

2.2 action、default

default参数表示如果在命令行中没有输入参数值的话就会调用default的默认值。如下所示,第一行命令没有传入is_action,所以其默认值是False
action参数表示如果在命令行中该参数名被找到时触发的操作或行为。比如is_action 参数定义了action="store_true",那么只要在命令行中出现了该参数,那么is_action 的值就会被设置为True
如下图第二行的命令所示,出现了--is_action 所以结果输出为True
同理,action="store_False"表示解析到了/出现了该参数就设置为Fasle

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')  
parser.add_argument("--is_action",default=False, action="store_true", help="discribe is_action")
args = parser.parse_args()
print(args.is_action)

argparse,一些小知识的代码实现,源码,python,深度学习

如果action="store_const"表示解析到了/出现了该参数就设置为const,其中const为我们定义在action后的const参数值。如下所示:指定const=9999

parser.add_argument("--is_action",default=False, action="store_const",const=9999, help="discribe is_action")

argparse,一些小知识的代码实现,源码,python,深度学习

2.3 nargs

nargs参数用于指定命令行参数的个数,它决定了参数的输入方式和解析方式。如下图所示,指定nargs=3,即--ls需要传入3个值否者会报错。传入的3个值组成一个列表赋值给--ls

import argparse

parser = argparse.ArgumentParser(description='Process some integers.') 
parser.add_argument("--ls", nargs=3)
args = parser.parse_args()
print(args.ls)

argparse,一些小知识的代码实现,源码,python,深度学习
nargs参数的取值可以为以下几种:

N(例如3):参数接受 N 个值。
?:参数可以接受 0 个或 1 个值。
*:参数可以接受任意个数的值,存储为列表。
+:参数可以接受至少一个值,存储为列表。

示例:

import argparse

parser = argparse.ArgumentParser(description='Process some integers.') 
parser.add_argument("--ls", nargs="*")
args = parser.parse_args()
print(args.ls)

argparse,一些小知识的代码实现,源码,python,深度学习

2.4 type

type参数用于指定命令行参数的类型。在解析命令行参数时,argparse会将字符串类型的参数转换为指定的类型。下面是一些常见的type参数值:

str:字符串类型,这是默认值。
int:整数类型。
float:浮点数类型。
bool:布尔类型,接受True或False。
list:列表类型。


示例:指定转换为int类型,传入--dataset 为coco时报错,因为coco不能转换为int类型。传入--dataset 为字符串类型的"909"时,成功转换为int类型。

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--dataset", type=int)
args = parser.parse_args()
print(args.dataset)

argparse,一些小知识的代码实现,源码,python,深度学习

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--dataset", type=list)
args = parser.parse_args()
print(args.dataset)

argparse,一些小知识的代码实现,源码,python,深度学习

2.5 choices

choice参数用于指定命令行参数的可选值。如下所示,指定--dataset只能取coco或者voc2012,否则报错。

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--dataset", choices=["coco","voc2012"])
args = parser.parse_args()
print(args.dataset)

argparse,一些小知识的代码实现,源码,python,深度学习

2.6 metavar

metavar当使用 python xx.py --help命令获取参数信息时,仅仅改变参数的显示名字,不改变参数的调用方式。

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--dataset")
args = parser.parse_args()
print(args.dataset)

argparse,一些小知识的代码实现,源码,python,深度学习
即在打印帮助信息时,可以帮助用户理解--dataset参数的作用,即它是用于指定train_dataset


仅此而已


import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--dataset", metavar="train_dataset")
args = parser.parse_args()
print(args.dataset)

argparse,一些小知识的代码实现,源码,python,深度学习

2.7 dest

dest参数用于指定解析器解析命令行参数后,将其存储在哪个属性中。默认情况下,argparse将使用参数的名称作为属性的名称。例如,如果参数名称为--dataset,则解析器将创建一个名为dataset的属性,即上文中的print(args.dataset),并将解析结果存储在该属性中。如果指定了dest参数,则可以使用不同的名称存储解析结果。

注意 此时不是print(args.dataset)而是print(args.train_set),相当于重命名属性名称使其更容易理解。

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--dataset", dest="train_set")
args = parser.parse_args()
# 注意 此时不是args.dataset而是args.train_set
print(args.train_set)

argparse,一些小知识的代码实现,源码,python,深度学习

三、总结

更详细的文档说明请参考:
Python中文文档文章来源地址https://www.toymoban.com/news/detail-768493.html

到了这里,关于【小知识】argparse --- 命令行选项、参数和子命令解析器详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux系统基础快速入门详解】Linux命令格式、特点、语法详解、选项、参数

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) Linux命令是在Linux操作系统中使用的指令,用于执行各种系统管理、文件操作和程序运行等任务。下面是对Linux命令的格式、特点、语法

    2024年02月07日
    浏览(47)
  • 常用python代码大全-python使用argparse模块处理命令行参数

    argparse 是 Python 的一个标准库模块,用于从命令行解析参数。这个模块使编写用户友好的命令行接口变得更加简单。下面是一个使用 argparse 模块处理命令行参数的示例代码: 在这个示例中,我们首先导入了 argparse 模块。然后,我们创建了一个 ArgumentParser 对象,它代表我们的

    2024年02月01日
    浏览(44)
  • 以optee的sign_encrypt.py为例讲解argparse命令解析模块

    Argparse是 Python 标准库中推荐的命令行解析模块。该模块会自动生成提示信息,且在用户给程序传入非法参数时报错。 刚好最近在看optee的sign_encrypt.py,以它为例介绍python的argparse命令解析模块。 脚本参见:optee_os/scripts/sign_encrypt.py at master · OP-TEE/optee_os · GitHub ArgumentParser 对象

    2024年02月10日
    浏览(47)
  • 〖Python 数据库开发实战 - MongoDB篇⑯〗- MongoDB创建索引时的一些实用的重要选项参数

    订阅 Python全栈白宝书-零基础入门篇 可报销! 白嫖入口-请点击我。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏, 免费阶段订阅数量4300+ , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:加入社区的小伙

    2024年02月02日
    浏览(69)
  • DICOM图像的常用一些参数解析

    医学图像DICOM医学影像文件格式详解 Dicom文件基本操作 DICOM图像参数? 像素:构成图片的小色点。图像每个维度的像素个数——该维度一共有多少个均匀分布的像素点。 分辨率(单位DPI):每英寸(Inch)上像素的数量,即小色点的分布密度,当像素相同时,分辨率越高,即

    2024年02月12日
    浏览(37)
  • ffmpeg关于音频的一些命令处理参数

    参考ffmpeg学习笔记五 - 知乎 -aframes number (output) 设置输出的音频帧数,这是-frames:a的别名,已不使用。 -ar[:stream_specifier] freq (input/output,per-stream) 设置音频采样频率,对于输出流,默认情况下将其设置为相应输入流的频率。 对于输入流,此选项仅对音频捕获设备和原始demuxers有

    2024年02月13日
    浏览(37)
  • argparse.ArgumentParser() 用法解析

    本文借阅了各网站大佬的经验,已将原文附 Reference 部分,再此表达最诚挚的谢意,如有侵权,本人立即删除! argparse 是一个 Python 模块:命令行选项、参数和子命令解析器。 argparse 模块可以让人 轻松编写用户友好的命令行接口 。程序定义它需要的参数,然后 argparse 将弄清

    2024年02月10日
    浏览(40)
  • python argparse传入布尔参数不生效的解决方法

    在一个需要用到flag作为信号控制代码中一些代码片段是否运行的,比如\\\"--flag True\\\"或者\\\"--flag False\\\"。 但是古怪的是无法传入False,无论传入True还是False,程序里面都是True的参数,所以这个flag并没有生效,也就失去了意义。 参考代码: 执行上面的代码:python3 test.py --flag False

    2024年02月13日
    浏览(37)
  • 关于Windows命令行(cmd)的一些知识

    CMD命令是一种命令提示符,CMD是command的缩写,即命令提示符(CMD),位于C:WindowsSystem32的目录下。 这个玩意我觉得很方便也很酷。下面我来介绍一下我平时用到的cmd操作。 如何使用cmd命令快速打开电脑软件,告别桌面快捷方式!! 打开“此电脑”,在空白处右键,点击“

    2024年02月08日
    浏览(33)
  • 【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)

    这篇文章给大家介绍下iptables防火墙,防火墙大致分三种,分别是硬件、软件和云防火墙。硬件的话部署在企业网络的入口,有三层路由的H3C、华为、Cisco(思科),还有深信服等等;软件的话一般是开源软件,写在网站内部,最常见的有iptables(写入Linux内核)和firewalld(C

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包