一、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 中确定命令行参数。

argparse简介相关推荐

  1. python argparse 简介

    本教程是对于Python标准库中推荐使用的命令行解析模块argparse的简单介绍. PS:还有其他两个模块实现这一功能,getopt(等同于C语言中的getopt())和弃用的optparse.因为 ...

  2. Py之argparse:Python库之argparse(命令行解析)简介、安装、使用方法之详细攻略

    Py之argparse:Python库之argparse(命令行解析)简介.安装.使用方法之详细攻略 导读 python中的命令行解析最简单最原始的方法是使用sys.argv来实现,更高级的可以使用a ...

  3. java 命令读取参数_如何读取/处理命令行参数?

    我原本是C程序员. 我看到了许多花招和"技巧"来阅读许多不同的论点. Python程序员可以通过哪些方式做到这一点? 有关 #1楼 标准库中的规范解决方案是argparse ( d ...

  4. python数据分析可视化实例-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  5. python可视化数据分析-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  6. 简介:argparse

    一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数,例如python parseTes ...

  7. python3 命令行参数处理库 argparse、docopt、click、fire 简介

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse.docopt.click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. 本文作 ...

  8. python argparse模块_Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...

  9. python解析库_Python命令行解析库argparse

    原博文 2014-08-13 05:48 − 2.7之后python不再对optparse模块进行扩展,python标准库推荐使用argparse模块对命令行进行解析. 1.example 有一道面试 ...

最新文章

  1. HTML-CSS-JS-PHP的顺序及相关网址(转)
  2. 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )
  3. 《大话数据结构》样章试读
  4. 使用bash echo 输出回车转义
  5. 方法参数泛型_无参数泛型方法反模式
  6. 让Python输出更漂亮
  7. python快速比较两个json_Python 比较两个json的方法
  8. 佳能hdr_多方位升级 佳能发布数码单反相机新品EOS 850D
  9. 快速JQuery——(第一章)第一个JQuery
  10. C#实现鼠标进入按键范围后按键自动窗体内位置移动
  11. java基础(七)--- set
  12. 《我在大学挺好的》之——选择了计算机专业
  13. contest3 CF994 div2 ooxxx? oooox? ooooo?
  14. Uboot pmic调试
  15. SAMA5D3X-EK 嵌入式linux内核编译启动及通过nfs通过网络启动文件系统及文件系统镜像的制作
  16. 华为防火墙VRRP双机热备的配置
  17. 从租售比看中国房价的合理性
  18. Qt学习经验之quit()、exit()、close()
  19. 在线压缩转换文件的软件
  20. android设置加密步长,非稳态计算时Fluent 时间步长如何设置(转载)

热门文章

  1. DNS域传送漏洞(一)
  2. hc05与单片机连接图_单片机实例分享,快递追踪器
  3. 编程干货|普通大学生如何实现经济独立?你不会还在拿着父母给的千把块钱省吃俭用吧!
  4. 来啦老弟,论如何比较两个时间的先后
  5. ios12电池测试软件,5款旧iPhone升级iOS12.3.1续航测试:真的有提升
  6. ES数据库的搭建(包含踩坑记录)
  7. @JsonFormat注解使用
  8. selenium【二】—webdriver API
  9. 【Python Other】一网打尽 Python复制文本文件到剪切板
  10. c语言中等于号和大于号的优先级,数学优先级