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

目录
  • 一、argparse简介
  • 二、简单案例
  • 三、ArgumentParser参数
  • 四、add_argument指令参数解释
  • 五、vars()

一、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的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python argparse 解析命令行参数模块详情

    目录 一.预备知识 1.安装 2.使用的一般步骤 二.实操笔记 1.函数详解 1.1ArgumentParser 1.2add_argument 2.调用实例 一.预备知识 argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数. 1.安装 argsparse是python的命令行解析的标准模块,内置于python,不需要安装.使用的时候直接: import argparse 2.使用的一般步骤 这

  • Python argparse模块实现解析命令行参数方法详解

    argparse是Python的一个标准模块,用于解析命令行参数,即解析sys.argv中定义的参数.实现在:传送门 argparse模块还会自动生成帮助和使用信息,即在最后加-h或--help.当用户输入的参数无效时,会触发error,并给出出错原因. python test_argparse.py -h python test_argparse.py --help 使用argparse的步骤: 1.创建解析器:argparse.ArgumentParser(),ArgumentParser是

  • Python命令行参数argv和argparse该如何使用

    概述 运行python脚本时通过命令行方式传入运行参数通常有以下两种自建方式: sys.argv - 简洁 argparse - 丰富,可自定义 下面详细说一下具体时使用 argv # test_argv.py import sys args = sys.argv print(f'args = {args}') >>> output ➜ git:(master) python3 test_argv.py args = ['test_argv.py'] ➜ git:(master) ✗ p

  • Python 利用argparse模块实现脚本命令行参数解析

    study.py内容如下 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'shouke' import argparse def argparseFunc(): ''' 基于argparse模块实现命令参数解析功能 执行示例: python study.py -i 172.19.7.236 -p 8080 -a -r python study.py --ip 172.19.7.236 --port 7077 --auth -w

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

    argparse是python用于解析命令行参数和选项的标准模块. 很多时候,需要用到解析命令行参数的程序,目的是在终端窗口输入训练的参数和选项. argparse 模块可以让人轻松编写用户友好的命令行接口. 程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数. argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息. test.py # -*- coding: utf-8 -*- import argparse #

  • python 如何利用argparse解析命令行参数

    命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码当中的话,我们每次修改参数都需要修改对应的代码和逻辑显然这不太方便.比较好的办法就是把必要的参数设置成通过命令行传入的形式,这样我们只需要在运行的时候修改参数就可以了. sys.argv 解析命令行传入参数最简单的办法就是通过sys.argv,sys.argv可以获取到我们通过命令行传入的参数. import sys print(sys.argv) 用法很简单,只需要调用sys.argv即可.a

  • Python 中使用 argparse 解析命令行参数

    目录 1.Python 中的参数解析 2.类型 3.子命令 4.程序架构 使用 argparse 模块为应用程序设置命令行选项. 有一些第三方库用于命令行解析,但标准库 argparse 与之相比也毫不逊色. 无需添加很多依赖,你就可以编写带有实用参数解析功能的漂亮命令行工具. 1.Python 中的参数解析 使用 argparse 解析命令行参数时,第一步是配置一个 ArgumentParser 对象.这通常在全局模块内完成,因为单单_配置_一个解析器没有副作用. import argpars

  • Python详解argparse参数模块之命令行参数

    目录 前言 示例一:最简参数对象 示例二:整数求和 示例三:文件是否被篡改 自定义类型 choices选项限定 required必选参数 子命令 前言 help(argparse)查看说明文档,“argparse - Command-line parsing library”我们可以知道是一个命令行解析库,是关于参数解析相关的一个模块. 示例一:最简参数对象 先来一段简单的代码,快速熟知下这个参数是个啥.保存为t.py这样一个文件 import argparse parser = argpars

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

    目录 一.argparse简介 二.简单案例 三.ArgumentParser参数 四.add_argument指令参数解释 五.vars() 一.argparse简介 argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数,使用之前需要先导入包 import argparse 二.简单案例 简单使用,创建一个名为test.py的文件 # 导入 argparse 模块 import argparse # 创建一个argparse 的对象 parser = arg

  • python命令行参数解析OptionParser类用法实例

    本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from optparse import OptionParser parser = OptionParser(usage="usage:%prog [optinos] filepath") parser.add_option("-t", "--timeout", action = "store", type =

  • Python中最好用的命令行参数解析工具(argparse)

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解析的模块来帮你做这个苦力活. Python 本身就提供了三个命令行参数解析模块,我这里罗列一下它们的大致情况供你了解. getopt,只能简单的处理命令行参数 optparse,功能强大,易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. argparse,使其更加容易的编

  • Python命令行参数解析工具 docopt 安装和应用过程详解

    什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制.这样脚本在执行的时候就必须按照这样格式来执行,同时,也可以很方便的编写一些帮助信息(其实很多软件在输入 -h 的时候显示信息 .例如 python -h ,会显示所有的 python 指令,并且页通过 docopt 限制了 python 指令的格式),下面是一些简单的例子: docopt 的安装 d

  • Python命令行参数解析模块optparse使用实例

    示例 复制代码 代码如下: from optparse import OptionParser [...] def main():     usage = "usage: %prog [options] arg"     parser = OptionParser(usage)     parser.add_option("-f", "--file", dest="filename",                     

  • Python命令行参数解析模块getopt使用实例

    格式 getopt(args, options[, long_options]) 1.args表示要解析的参数. 2.options表示脚本要识别的字符.字符之间用":"分隔,而且必须要以":"后结尾,例如"a:b:c:". 3.long_options是可选的,如果指定的话,可以解析长选项.形式为字符串列表,如['foo=', 'frob='].长选项要求形式为"–name=value" 4.该方法返回2个元素.第一个元素是

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

    目录 一.传入一个参数 二.传入多个参数 三.改变数据类型 四.可选参数(关键字参数) 五.参数默认值 六.参数解析 补充:python中的argparse基本用法 argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数. 一.传入一个参数 import argparse # 创建一个命令行参数解析器 parser = argparse.ArgumentParser(description='命令行中传入一个数字') # 往解析器里面添加参数 parser.add_

随机推荐