您现在的位置是:网站首页> 编程资料编程资料
Python argparse 解析命令行参数模块详情_python_
2023-05-26
376人已围观
简介 Python argparse 解析命令行参数模块详情_python_
一、预备知识
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数。
1、安装
argsparse是python的命令行解析的标准模块,内置于python,不需要安装。使用的时候直接:
import argparse
2、使用的一般步骤
这个模块使用起来十分简单,就类似于 造(买)个冰箱→在冰箱里面放点食材→需要的时候把食材拿出来做出美味的食物。
它的使用分为三步:
# 1.创建一个解析对象; parser = argparse.ArgumentParser() # 2.然后向该对象中添加你要关注的命令行参数和选项, # 每一个 add_argument 方法对应一个你要关注的参数或选项; parser.add_argument() # 3. 最后调用 parse_args()方法进行解析; parser.parse_args()
另外,关于参数的书写习惯,有如下几种:
- 空格分开,最常用,比如
parser.parse_args('-x X'.split()) - 长选项用
=分开 ( “长”选项名字,即选项的名字多于一个字符),比如parser.parse_args('--foo=FOO'.split()) - 短选项可以写在一起,比如
parser.parse_args('-xX')
二、实操笔记
上面简要介绍了使用的基本步骤,下面首先详细介绍涉及到的几个函数,然后再给一个实例。
1、函数详解
1.1ArgumentParser
这个函数的作用就是创建一个解析对象(冰箱),下面是它的参数列表:
ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)
参数含义如下所示:
- prog:程序的名字,默认为
sys.argv[0],用来在help信息中描述程序的名称。 - usage:描述程序用途的字符串
- description:
help信息前的文字。 - epilog:
help信息之后的信息 - add_help:设为
False时,help信息里面不再显示-h --help信息。 - prefix_chars:参数前缀,默认为
- - fromfile_prefix_chars:前缀字符,放在文件名之前
- argument_default:参数的全局默认值。
- conflict_handler:对冲突的处理方式,默认为返回错误“error”。还有“resolve”,智能解决冲突。当用户给程序添加了两个一样的命令参数时,“error”就直接报错,提醒用户。而“resolve”则会去掉第一次出现的命令参数重复的部分或者全部(可能是短命令冲突或者全都冲突)。
1.2add_argument
此函数用来指定程序需要接受的命令参数,它的参数列表如下所示:
add_argument(name or flags... [, action] [, nargs] [, const] [, default] [, type] [, choices] [, required] [, help] [, metavar] [, dest]) # 注:[] 表示可选
参数含义如下:
- name or flags:参数有两种,可选参数和位置参数。
parse_args()运行时,会用-来认证可选参数,剩下的即为位置参数。位置参数必选,可选参数可选。 - action:参数动作;
argparse内置6种动作可以在解析到一个参数时进行触发:store保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。store_const保存一个被定义为参数规格一部分的值,而不是一个来自参数解析而来的值。这通常用于实现非布尔值的命令行标记。store_ture/store_false保存相应的布尔值。这两个动作被用于实现布尔开关。append将值保存到一个列表中。若参数重复出现,则保存多个值。append_const将一个定义在参数规格中的值保存到一个列表中。version打印关于程序的版本信息,然后退出。count统计参数出现的次数。 - nargs:参数的数量。值可以为整数
N(N个),*(任意多个),+(一个或更多),值为?时,首先从命令行获得参数,若没有则从const获得,然后从default获得: - dest:参数值就保存为
parse_args()返回的命名空间对象中名为该dest参数值的一个属性。如果提供dest,例如dest="a",那么可以通过args.a访问该参数 - default:设置参数的默认值
- type:把从命令行输入的结果转成设置的类型
- choice:允许的参数值
- required:是否必选
- desk:可作为参数名
- help:参数命令的介绍
2、调用实例
下面给个简单的示例,只是说明如何调用而已,后续可根据上面对函数的详细解释来使其更实用智能。
import argparse parser = argparse.ArgumentParser(description ="This is a Test!") parser.add_argument("type",choices=['scheduler','tool'], help="make application type") parser.add_argument('-c',dest='configurefile',help="configure file") parser.print_help() args = parser.parse_args(["tool","-c","a.ini"]) print(args.type) print(args.configurefile) # --------------output------------------ usage: draft.py [-h] [-c CONFIGUREFILE] {scheduler,tool} This is a Test! positional arguments: {scheduler,tool} make application type optional arguments: -h, --help show this help message and exit -c CONFIGUREFILE configure file tool a.ini这个简单的例子就,就创建了一个argparse对象,然后加了两个参数(不算-h),一个是必选参数
tool,另一个是可选参数-c,然后使用dest将其转换为参数的一个属性。
ps:其实一开始笔者遇到了一个问题,一开始笔者在必选参数前加了type,其实是不用的,对于必选参数直接给值即可。
另外,当有多个必选参数时,需要注意必选参数的顺序一定要和加参数的顺序保持一致。
可选参数和必选参数可以交换顺序,只需保持可选参数与值不要分开,必选参数的相对顺序与加参数的顺序保持一致即可!
到此这篇关于Python argparse 解析命令行参数模块详情的文章就介绍到这了,更多相关Python argparse内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关内容
- 如何利用python批量提取txt文本中所需文本并写入excel_python_
- Python matplotlib数据可视化图绘制_python_
- Python操作xlwings的实例详解_python_
- 教你使用Python从文件中提取IP地址_python_
- Python使用read_csv读数据遇到分隔符问题的2种解决方式_python_
- Python正则表达式以及常用匹配实例_python_
- pytorch中使用LSTM详解_python_
- LyScript寻找ROP漏洞指令片段的方法详解_python_
- Pytorch实现LSTM案例总结学习_python_
- Python+LyScript实现自定义反汇编_python_
