argparse简介

2023-05-16

一、argparse简介

argparse 模块是 Python 内置的用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数。

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

2. 举个栗子

# 导入库
import argparse
 
# 1. 定义命令行解析器对象
parser = argparse.ArgumentParser(description='Demo of argparse')
 
# 2. 添加命令行参数
parser.add_argument('--epochs', type=int, default=30)
parser.add_argument('--batch', type=int, default=4)
 
# 3. 从命令行中结构化解析参数
args = parser.parse_args()
print(args)
epochs = args.epochs
batch = args.batch
print('show {}  {}'.format(epochs, batch))

用大白话对上面代码进行解读,首先我们导入argparse这个包,然后包中的ArgumentParser类生成一个parser对象(其中的description对参数解析器的作用进行描述),当我们在命令行显示帮助信息的时候会看到description描述的信息。例如:python try.py -h

接着我们通过对象的add_argument函数来增加参数。这里我们增加了训练中常用的epochs和batch参数,最后采用对象的parse_args获取解析的参数。打印结果如下图所示:

或者执行命令python fun_test.py --epochs 30 --batch 4

二、参数详解

1.add_argument() 方法

(1)添加命令行参数

给一个 ArgumentParser 添加程序参数信息,是通过调用 add_argument() 方法完成的。通常,这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象。这些信息在 parse_args() 调用时被存储在ArgumentParser实例化对象中,以供后续使用。add_argument() 方法定义如何解析命令行参数的呢?

(2)add_argument() 方法定义如何解析命令行参数

parser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][,choices][, required][, help][, metavar][, dest])

每个参数解释如下:

  • name or flags: 普通参数或flag参数选项参数的名称或标签,例如 epochs 或者 -e, --epochs。Flag参数不需要指定参数值,只需要带有参数名即可。
  • action: 命令行遇到flags参数时的动作。有两个常见的动作,store_true:设定flag参数为true;store_false:设定flag参数为False。注意:如果直接运行程序,默认不读取该变量,要使用必须要进行传参,例如:python try.py --epochs
  • nargs: 应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
  • default: 不指定参数时该参数的默认值。
  • type: 命令行参数应该被转换成的数据类型。
  • required: 是否为必选参数或可选参数。
  • help: 参数的帮助信息。
  • metavar: 在 usage 说明中的参数名称,对于必选参数,默认就是参数名称,对于可选参数默认是全大写的参数名称。
  • dest: 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
  • choices: 参数可允许的值的一个容器。
  • const: action 和 nargs 所需要的常量值。
  • store_const:表示赋值为const;
  • append:将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
  • append_const:将参数规范中定义的一个值保存到一个列表;
  • count:存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;

2. 解析命令行的参数:parse_args()

ArgumentParser对象通过 parse_args() 方法解析命令行的参数。它将检查命令行中每个参数,转换为适当的数据类型,然后调用相应的操作,并把参数结构化后存放在对象args中。

args = parser.parse_args()

在脚本中,通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

argparse简介 的相关文章

  • 使用 argparse 将参数发送给 Python 脚本中的函数

    我处于一种奇怪的情况 我需要一个 Python 函数从脚本中运行 然后从我的主代码中调用该脚本 我想用subprocess模块 并知道如何使用它将参数传递给纯脚本 但问题是 我需要将参数传递给其中的嵌套 Python 函数 其中大部分是可选
  • 使用“argparse”而不是 sys.argv

    我的脚本当前使用sys argv检查提供给程序的输入文件 我正在尝试利用argparse相反 但我似乎无法让它发挥作用 我能够设置它并添加一个参数 但是当我解析一个参数并打印该解析的参数时 我得到一个名称空间 我怎样才能得到一个字符串 基本
  • 允许在子命令后使用 argparse 全局标志

    我正在使用 argparse 构建带有子命令的命令 mycommand GLOBAL FLAGS 子命令 FLAGS 我希望全局标志无论在子命令之前还是之后都可以工作 有没有一种干净的方法来做到这一点而不涉及重复代码 例如 parser a
  • 调试时模拟 argparse 命令行参数输入

    该线程是上一个线程的扩展 可以找到here https stackoverflow com questions 50881403 debugging argpars in python 比如说 我有一个代码有两个用途 1 从整数列表中打印最
  • 来自文本文件的 Argparse 自定义帮助

    我想使用 argparse 库 因为它的灵活性 但我在禁用默认帮助对话框以显示文本文件中的自定义帮助对话框时遇到问题 我想做的就是在传递 h 或 help 选项时显示文本文件中的文本 这是我如何尝试的示例 parser argparse A
  • 在 Snakemake 脚本中使用 argparse

    是否可以将自定义命令行参数传递给snakemake脚本 我已经尝试过了 但是用以下命令执行 Snakefileargparse结果出错snakemake error unrecognized arguments zz 下面是一个示例脚本 i
  • 设置主函数测试的命令行参数

    我在 python 中有一个获取命令行参数的 main 函数 有没有办法让我为此函数编写 pytest 测试并在代码中定义参数 e g def main argparse code args other arg parser parse k
  • 使用 argparse 调用函数[重复]

    这个问题在这里已经有答案了 我在从 argpars 调用函数时遇到问题 这是我的脚本的简化版本 可以打印我给 s 或 p 的任何值 import argparse def main parser argparse ArgumentParse
  • 如何使用 click 来解析字符串中的参数?

    假设我有一个包含参数和选项的字符串列表 其中argparse 我可以使用以下方法解析这个列表parse args将函数转化为对象 如下 import argparse extra params sum 7 1 42 parser argpa
  • 从Python中的ArgumentParser解析的args创建arg字符串[重复]

    这个问题在这里已经有答案了 如果我有一个argparser ArgumentParser 加上返回的命名空间parser parse args 是否有一种简单的方法可以将命名空间转换回 argv 列表 以便它们可以传递回程序 本质上 par
  • 如何在不打补丁的情况下本地化Python的argparse模块?

    当消息的某些部分是用户语言而其他部分是英语时 本地化的命令行应用程序看起来很奇怪 我不知道当我从源代码安装 Python 3 时是否搞砸了任何东西 似乎没有 mo文件 所以argparse 总体而言 没有本地化意识 API 似乎也没有提供本
  • 从外部模块添加 argparse 参数

    我正在尝试编写一个可以由第三方扩展的Python程序 该程序将从命令行运行 并提供任何参数 为了允许第三方创建自己的模块 我创建了以下 简化的 基类 class MyBaseClass object def init self self d
  • 作为 argparse 参数的目录路径

    我想接受目录路径作为用户输入add argument of ArgumentParser 到目前为止 我已经写了这个 import argparse parser argparse ArgumentParser parser add arg
  • python argparse子命令具有依赖性和冲突

    我想使用 argparse 来构建一个带有子命令的工具 可能的语法可以是 tool py 下载 from 1234 interval 60 tool py 下载 build 1432 tool py clean 数字 10 所以我想使用ar
  • Argparse 一个参数有两个值

    现在我的脚本通过以下方式调用 python resylter py n newfile o oldfile 代码如下 parser add argument n newfile help Uses only with o argument
  • Python argparse:在帮助条目之间插入空行

    使用 argparse 时 传递 help程序生成帮助文本 不幸的是 它很难阅读 因为选项之间没有空行 这里摘录一段来说明 optional arguments h help show this help message and exit
  • 如何在Python的argparse中对同一组参数调用parse_args()两次?

    简化的测试用例 我有一个需要两个参数的脚本 第一个是整数列表 第二个是必须包含在第一个参数的整数集中的单个整数 例如 python argtest py valid nums 1 2 3 num 2 应该可以 但是 python argte
  • python argparse 在描述后打印用法文本

    有没有办法使用 python argparse 在描述文本后打印用法文本 我的命令行 argparse 正在工作 但我想在使用信息之前打印版本信息 Edit version 1 0 usage blahcmd h help some lov
  • argparse 更改参数的定义

    我按如下方式设置参数解析器 parser argparse ArgumentParser parser add argument point help enter a point e g 2 3 4 parser parse args po
  • Python argparse 作为函数

    以这种方式获取命令行参数有什么本质上的错误吗 我的意思是把参数解析放入它自己的函数中 它会被认为是非 Pythonic 或更严重吗 usr bin python import argparse def getArgs argv None p

随机推荐

  • 【2020-8-9】APM,PX4,GAZEBO,MAVLINK,MAVROS,ROS之间的关系以及科研设备选型

    0 概述 无人机自主飞行平台可以分为四个部分 xff1a 动力平台 xff0c 飞行控制器 xff0c 机载电脑和模拟平台 动力平台 xff1a 负责执行飞行任务 xff0c 包括螺旋桨 电机 机架等 xff0c 用于科研的一般都是F380
  • 【8-12】树莓派ubuntu升级Cmake

    树莓派上运行的是Ubuntu Mate18 04的系统 xff0c 自带的cmake版本是3 10 0 xff0c 编译软件的时候要求cmake版本大于3 11 0 需要进行升级 注意网上的教程会让你卸载现在系统里cmake xff0c 就
  • 【8-12】树莓派部署t265+px4飞控实现无人机视觉定位

    在之前的文章中 xff0c 我们已经成功在树莓派 xff08 ubuntu mate 18 04 xff09 上部署了T265的追踪摄像头 本文将利用MAVROS协议 xff0c 将T265测量的位姿信息发送给px4固件 xff0c 实现室
  • 【8-14】树莓派3B+ Ubuntu Mate 18.04使用Intel NCS2做人脸识别

    想要在无人机平台部署CV xff0c 但是无人机的机载电脑需要安装ROS xff0c 而ROS需要在Ubuntu的平台才能方便使用 xff0c 所以树莓派3B 43 上安装的是Ubuntu Mate18 04 Intel Ncs2 xff0
  • 【8-14】virtualenv和virtualenv wrapper的快速入门

    跟conda类似的Python虚拟环境管理工具 xff0c jetson nano暂时无法使用conda 1 virtualenv span class token comment 安装 span span class token func
  • 【20-9-22】Python实现多进程多线程

    简介 对于计算机来说 xff0c 有两种实现多任务的方式 xff1a 并行和并发 并发 xff1a 一段时间内交替执行某些任务 如单核CPU轮流执行一些程序 并行 xff1a 一段时间内同时运行多个任务 多核cpu处理多任务 1 进程 程序
  • 【21-3-28】pvcreate device excluded by a filter

    使用Lvm创建虚拟磁盘时报错的解决方法 xff1a span class token function sudo span pvcreate dev sdd Device dev sdd excluded by a filter 原因是因为
  • BMI指数

    身体质量指数 xff08 Body Mass Index xff0c BMI xff09 是根据人的体重和身高计算得出的一个数字 xff0c BMI对大多数人来说 xff0c 是相当可靠的身体肥胖指标 xff0c 其计算公式为 xff1a
  • 生日悖论的Python实现

    题目 xff1a 如果你的班级中有23个学生 xff0c 那么其中有两个人生日相同的概率为多大 xff1f usr bin env python coding 61 utf 8 import random def has duplicate
  • 二分法查找的Python实现

    代码如下 xff1a usr bin env python coding 61 utf 8 def BinarySearch t x t sort 对列表进行排序 xff0c 列表是有序的 xff0c 是二分法的前提 low 61 0 hi
  • Python中bisect模块用法,及实现方式

    bisect用法 import bisect bisect bisect left t x 在T列表中查找x xff0c 若存在 xff0c 返回x左侧位置 bisect bisect right t x bisect insort lef
  • c++实验六总结(自用)

    实验目的 掌握派生类的声明方法和派生类构造函数的定义方法 掌握不同方式下 xff0c 构造函数与析构函数的执行顺序与构造规则 程序如下 xff1a include lt iostream gt include lt string gt us
  • 光网络知识

    一 WDM网络体系结构注意点 1 波长复用 2 波长转换 3 透明性 4 电路交换 5 生存性 xff1a 当网络出现故障时 xff0c 光路能够自动路由到另一条备份路径上 xff0c 为网络提供了高度的弹性 6 光路拓扑 二 波分复用网络
  • docker镜像更新后 如何正确更新对应的容器 避免数据丢失

    容器的更新大致分为以下两种方法 1 容器并未存储任何应用程序的数据 在这种情况下 您可以在任何时候使用它的更新版本替换APP容器 方法是执行如下所示 span class token function docker span pull my
  • netconn_accept返回值为0,OSQCreate出错 lwip uocsii

    我是在main中有创建信号量的函数 led event 61 OSQCreate amp led q 0 MSGSIZE 这个因为配置中信号量上限较小 而在sys arch c中有一个创建消息邮箱的函数 err t sys mbox new
  • 零基础自学STM32-复习篇2——使用结构体封装GPIO寄存器

    我们首先要了解寄存器的一个特点 xff0c 他不是只针对一个外设 xff0c 而是所有的外设都 就拿GPIO的CRL xff0c ODR寄存器来说 对于GPIOA GPI xff2f E都有一组功能相同的寄存器只是地址不一样而已 xff21
  • 写给小白:使用GitHub来托管论文吧

    使用GitHub来托管论文吧 摘要 xff1a 写给小白 对于非计算机专业的小伙伴 xff0c 可能很少接触到GitHub吧 xff0c 但GitHub真心好用 xff0c 虽然我们不会用它来进行 托管代码 xff0c 但是可以用来托管论文
  • 【软件安装】ElasticSearch在Linux系统中的安装

    0 安装JDK xff0c 并配置环境变量 ElasticSearch依赖Java环境 xff0c 先在服务器上安装好JDK xff0c 并配置好JAVA HOME环境变量 1 从官网下载ElasticSearch压缩包到本地 cd usr
  • Python爬取淘宝商品数据,价值千元的爬虫外包项目

    前言 本文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 如有问题请及时联系我们以作处理 PS xff1a 如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 完整代码可以点击下方链接获取 python免费学习资
  • argparse简介

    一 argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块 xff0c argparse 模块可以让人轻松编写用户友好的命令行接口 xff0c 能够帮助程序员为模型定义参数 argparse定义四