我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python命令行参数解析包argparse的使用详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python命令行参数解析包argparse的使用详解

一、argparse简介

argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数,使用之前需要先导入包 import argparse

二、简单案例

简单使用,创建一个名为test.py的文件

# 导入 argparse 模块
import argparse

# 创建一个argparse 的对象
parser = argparse.ArgumentParser()

# 添加一个接收参数,默认值为Se7eN
parser.add_argument("-n", "--name", default="Se7eN")

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

打印结果为:

houlei@houleideMacBook-Pro argparse_demo % python3 test.py   # 此时在test.py后面没有跟上参数,
args = Namespace(name='Se7eN')   # 所以打印出来的name为默认值 Se7eN

再次验证:

houlei@houleideMacBook-Pro argparse_demo % python3 test.py -n HOU   # 此时后面跟上了 -n 参数,并且赋值HOU
args = Namespace(name='HOU')  # 打印出来 name 的值为 HOU
houlei@houleideMacBook-Pro argparse_demo % python3 test.py --name hou  # 此时后面跟上了 --name 参数,并赋值为hou
args = Namespace(name='hou')  # 打印出来的 name 的值为 hou
houlei@houleideMacBook-Pro argparse_demo %

解释说明

在上述代码  parser.add_argument("-n", "--name", default="Se7eN") 中,有两个参数 “-n”和“--name” 分别代表什么?其中-n 和 --name 都是我们自己自定的参数名。至于n和name ,你可以随便起个变量名都可以,但是要注意,前面的一个 “-”和“--”才是关键。

一个“-”的参数,例如:-n, 他其实相当于我们在liunx中使用的指令,一个自定义的指令。

两个“--”的参数,例如:--name 他就相当于在程序中,用来接收对对应指令值的变量,例如我们在控制台上输入 python3 test.py -n hou。 其中 -n 就代表使用的 -n 的指令,然后将后面的 hou 的值赋值给对应的变量, -n 对应的变量就是 --name 。所以我们使用print 打印的时候才显示的name = hou

简单理解:一个“-”的是指令,两个“--”的是接收指令内容的变量。

三、ArgumentParser参数

ArgumentParse是解析器对象,在创建一个解析器对象的时候,是有很多参数可以配置,下面就演示一下这些参数的使用

1、prog: 程序的名称(默认值:sys.argv[0])

# 导入 argparse 模块
import argparse

# 创建一个argparse 的对象
parser = argparse.ArgumentParser()

# 添加一个接收参数,默认值为Se7eN
parser.add_argument("-n", "--name", default="Se7eN")

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

执行代码:

修改代码继续演示

# 导入 argparse 模块
import argparse

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname")    # 注意这里添加了prog=testname

# 添加一个接收参数,默认值为Se7eN
parser.add_argument("-n", "--name", default="Se7eN")

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

2、usage: 用来描述该程序的用途,并且会覆盖原来的prog的显示

修改部分程序:

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块")

展示结果

3、description:帮助文档的描述和uasge功能类似,只是显示的位置不一样

继续修改部分代码:

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块", description="这是程序的介绍,和usage的功能模块描述类似")

展示结果

4、epilog:帮助文档的额外说明,位置在最下面

继续修改部分代码:

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块", description="这是程序的介绍,和usage的功能模块描述类似", epilog="额外说明")

展示结果:

5、自定义指令的前缀

默认是"-" 和 "--",这里如果你不喜欢使用,也可以自通过该参数自己指定前缀,个人觉得没必要。

代码演示:

# 导入 argparse 模块
import argparse

# 创建一个argparse 的对象 ,并通过prefix_chars 指定指令的前缀为 '+'
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块", description="这是程序的介绍,和usage的功能模块描述类似", epilog="额外说明", prefix_chars='+')

# 添加一个接收参数,默认值为Se7eN,这里的指令只能使用+ 表示,否则会报错
parser.add_argument("+n", "++name", default="Se7eN")

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

执行结果

四、add_argument指令参数解释

1、action: 的作用比较多,有保存布尔类型,常量类型,数组类型的参数的功能

注意1:使用action = store_true/store_false 时修饰的指令是不能赋值的,其对应的指令的值是布尔类型的

注意2:使用action = store_const 时修饰的指令的是不能赋值,其对应的指令的值常量类型

注意3:使用action = append 是可以复制,其对应的值会将该指令对应的值放在一个数组中

1.1 先来演示

使用action,保存布尔类型的指令的值:store_true/store_false:保存布尔类型的变量:

# 导入 argparse 模块
import argparse

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块", description="这是程序的介绍,和usage的功能模块描述类似", epilog="额外说明")

# 添加一个接收参数 -n,action = store_true 表示,<strong>在使用的时候,如果填写了该指令,那么该指令对应的值就是true,如果没有使用该指令,则为空</strong>
parser.add_argument("-n", "--name", action='store_true')

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

执行结果:

1.2、使用action设置常量指令

修改代码演示:

# 添加一个接收参数 -n,action = store_const 表示,在使用的时候,如果填写了该指令,那么该指就等于10 如果没写就等于空
parser.add_argument("-n", "--name", action='store_const',const=10)

执行结果:

1.3、使用action设置数组类型的指令

修改代码演示:

# 添加一个接收参数 -n,action = append, 会把该指令的值放在数组中
parser.add_argument("-n", "--name", action='append')

执行结果

2、nargs参数:表示该指令接收值的个数

示例1:

import argparse

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块", description="这是程序的介绍,和usage的功能模块描述类似", epilog="额外说明")

# 添加一个接收参数 -n, 并且该参数还必须要接收2个值,会放在一个数组中,其中nargs等于几,就表示要接受几个参数
parser.add_argument("-n", "--name", nargs=2)

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

运行结果:

示例2:

# 导入 argparse 模块
import argparse

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块", description="这是程序的介绍,和usage的功能模块描述类似", epilog="额外说明")

# 添加一个接收参数 -n,
# nargs = "?" :  表示只接收1个参数,正则表达式的写法
# nargs = "+" :  表示接收1一个或多个参数
# nargs = "*" :  表示接收0个或者多个参数
parser.add_argument("-n", "--name", nargs="*")

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

打印结果就不演示了

3、required 该指令是必须的

# 导入 argparse 模块
import argparse

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块", description="这是程序的介绍,和usage的功能模块描述类似", epilog="额外说明")

# 添加一个接收参数 -n,
# nargs = "?" :  表示只接收1个参数,正则表达式的写法
# nargs = "+" :  表示接收1一个或多个参数
# nargs = "*" :  表示接收0个或者多个参数
parser.add_argument("-n", "--name", nargs="*", required=True)

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

演示结果:

4、choices:如有choices选项,则该指令的值只能是choices中的一个

代码演示

# 导入 argparse 模块
import argparse

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块", description="这是程序的介绍,和usage的功能模块描述类似", epilog="额外说明")

# 添加一个接收参数 -n,
# nargs = "?" :  表示只接收1个参数,正则表达式的写法
# nargs = "+" :  表示接收1一个或多个参数
# nargs = "*" :  表示接收0个或者多个参数
parser.add_argument("-n", "--name", nargs="*", required=True, choices=['zhangsan', 'lisi'])

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

运行结果:

五、vars()

vars()方法可以将parser对象变成字典,方便使用

代码演示

# 导入 argparse 模块
import argparse

# 创建一个argparse 的对象
parser = argparse.ArgumentParser(prog="testname", usage="这是功能描述模块", description="这是程序的介绍,和usage的功能模块描述类似", epilog="额外说明")

# 添加一个接收参数 -n,
# nargs = "?" :  表示只接收1个参数,正则表达式的写法
# nargs = "+" :  表示接收1一个或多个参数
# nargs = "*" :  表示接收0个或者多个参数
parser.add_argument("-n", "--name", nargs="*", required=True, choices=['zhangsan', 'lisi'])

# 获取对应的参数的值
args = parser.parse_args()

# 控制台打印出来接收到的值
print("args = {}".format(args))

# 将parser 变成字典对象
print('arg_vars = {}'.format(vars(args)))

输出结果:

以上就是Python命令行参数解析包argparse的使用详解的详细内容,更多关于Python argparse的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python命令行参数解析包argparse的使用详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解Python中命令行参数argparse的常用命令

这篇文章主要为大家详细介绍了Python中命令行参数argparse的一些常用命令,文中的示例代码讲解详细,具有一定的学习价值,需要的可以了解一下
2023-01-29

python argparse命令行参数解析(推荐)

argparse是python用于解析命令行参数和选项的标准模块。 很多时候,需要用到解析命令行参数的程序,目的是在终端窗口输入训练的参数和选项。 argparse 模块可以让人轻松编写用户友好的命令行接口。 程序定义它需要的参数,然后 a
2022-06-02

详解Python命令行解析工具Argparse

最近在研究pathon的命令行解析工具,argparse,它是Python标准库中推荐使用的编写命令行程序的工具。 以前老是做UI程序,今天试了下命令行程序,感觉相当好,不用再花大把时间去研究界面问题,尤其是vc++中尤其繁琐。 现在用py
2022-06-04

python命令行参数argparse模块基本用法详解

这篇文章主要介绍了python命令行参数-argparse模块基本用法,需要的朋友可以参考下
2023-01-30

Python命令行解析器argparse怎么使用

这篇文章主要讲解了“Python命令行解析器argparse怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python命令行解析器argparse怎么使用”吧!第1章 argpars
2023-06-22

Python中命令行参数argparse模块的使用

argparse是python自带的命令行参数解析包,可以用来方便的服务命令行参数。本文将通过示例和大家详细讲讲argparse的使用,需要的可以参考一下
2023-02-01

python命令行参数模块argparse怎么使用

今天小编给大家分享一下python命令行参数模块argparse怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Pyt
2023-07-05

python命令行参数详解

在Python中,可以通过命令行传递参数给脚本。这些参数可以在脚本内部使用,以便根据不同的输入执行不同的操作。Python命令行参数的详解:1、位置参数:在命令行中按照顺序传递给脚本的参数,它们可以在脚本内部通过位置来访问;2、命令行选项:
python命令行参数详解
2023-12-18

Python 命令行解析工具 argparse基本用法

在工作中,我们经常需要从命令行当中解析出指定的参数,而 Python 也提供了相应的标准库来做这件事情,比如 sys, optparse, getopt, argparse,这里面功能最强大的莫过于 argparse,下面就来看看它用法,需要的朋友可以参考下
2022-12-24

Python中的命令行参数解析工具之docopt详解

前言 docopt 是一个开源的库,代码地址:https://github.com/docopt/docopt。它在 README 中就已经做了详细的介绍,并且还附带了很多例子可供学习,这篇文章也是翻译一下 README 中内容…… doc
2022-06-04

Python命令行参数解析的实用技巧

Python命令行参数解析的实用技巧在使用Python编写脚本时,经常需要从命令行获取参数。Python内置的argparse模块提供了一个简单而强大的实现命令行参数解析的工具。本文将介绍argparse的基本用法,并提供一些实用的技巧和
Python命令行参数解析的实用技巧
2024-02-03

命令行传递参数argparse.ArgumentParser的使用解析

这篇文章主要介绍了命令行传递参数argparse.ArgumentParser的使用解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录