这是我参与8月更文挑战的第14天,活动详情查看: 8月更文挑战
复习回顾
Python目前支持序列化的模块有三个,我们在前面已经学习
- 使用二进制协议对数据进行序列和反序列化操作-pickle模块
- 对数据进行转换成JSON格式和反序列化操作-json模块
- 使用类似字典键值对数据进行序列和反序列化操作-shelve模块
- 第三方库,是json模块的升级版对无用字符进行优化-messagepack模块
本期,我们来学习专门对命令行参数和选项进行解析 Python 内置模块-argparse 模块
?今天七夕佳节,不管有家室的还是没有家室的,约会吃狗粮晚上才开始。
那我们先带上耳机?、放上音乐?,完成今天的学习???~,再去见?的TA吧(#^.^#)
1. argparse模块概述
argparse 模块是Python专门用来对命令行选项、参数以及子命令来进行解析器
?argparse 模块优点:
- 提供易于编写的用户命令行接口,方便用户上手使用
- 程序只需要定义需要的参,argparse模块负责从sys.argv中解析出所需要的命令行参数
- 自动生成帮助文档和使用手册
- 自动检查传入程序参数有效性。若输入的参数无效会及时给出对应的报错信息
?argparse 模块解析命令主要包括如下步骤:
-
- 导入argparse模块
-
- 使用argparse.ArgumentParser()创建解析器对象
-
- 解释器对象调用add_argument()来添加参数
-
- 解释器对象使用parse_args()对用户输入的命令行参数进行解析
?敲黑板:
- ArgumentParser对象包含将命令行解析成Python数据类型所需的全部信息
- add_argument添加参数是指定ArgumentParser解释器对象如何获取字符串并将其转换为对象的
- parse_args默认不会被带参数调用,而是直接使用ArgumentParser自动从sys.argv中确定命令行的参数
2. argparse模块相关方法
argparse 模块提供创建解释器和一些格式化帮助文档的类如下:
方法/类 | 作用 |
---|---|
argparse.ArgumentParser() | 创建解释器 ArgumentParser 对象 |
argparse.Action(op,dest) | 返回的可调用对象可处理来自命令行的参数 |
argparse.RawDescriptionHelpFormatter | 格式化description和epilog |
argparse.RawTextHelpFormatter | 格式化帮助文档,可保留文字直接的空格 |
argparse.ArgumentDefaultsHelpFormatter | 自动添加默认的值的信息到每一个帮助信息的参数中 |
argparse.MetavarTypeHelpFormatter | 每个参数的值都显示其type类型 |
argparse.Namespace() | 创建一个存放属性的对象并将其返回 |
argparse.FileType(mode,buffsiz) | FileType对象用于解释器的type参数传入对象 |
argparse.parse_intermixed_args | 混合解析,把所有参数都放在列表里 |
argparse.parse_known_intermixed_args | 混合解析,返回由两个条目组成的元组 |
? 重要说明:
-
argparse.ArgumentParser解析器的参数共有13个
参数名称 说明 Prog 程序的名字,缺省使用,sys.argv[0] add_help 自动生成解析器增加 – h和–help选项,默认为True description 为程序添加功能描述,在参数文档之前先文本,默认值为None epilog 参数帮助文档之后显示的说明文本,默认值为None parents 解释器对象的列表,在传递给解释器前必须要先初始化 formatter_class 用于自定义帮助文档输出格式化类,共有4种 prefix_chars 可选参数的前缀字符集合,默认为‘-’ formfile_prefix_chars 可以从文件中读取其他参数时,用于标识文件名前缀字符集合,默认值为None argument_default 参数的全局默认值,默认值为None confict_handler 解决冲突选项的策略 add_help 为解释器添加一个-h/–help选项,默认为True allow——abbrev 如果缩写无歧义,则允许缩写选项,默认为True exit_on_error 决定当错误发生是否让解释器附带错误信息退出,默认为True -
ArgumentParser对象也提供很多方法如下
方法 作用 ArgumentParser.add_argument(name) 定义添加单个命令行参数如何解析 ArgumentParser.parse_args() 解析命令行 ArgumentParser.add_subparsers() 许多程序都会将其功能拆分为一系列子命令 ArgumentParser.add_argument_group() 创建适当的分组 ArgumentParser.add_mutually_exclusive_group 创建互斥组 ArgumentParser.set_defaults() 设置指令默认值 ArgumentParser.get_default() 获取一个命名空间属性的默认值 ArgumentParser.print_usage() 打印一段简短描述 ArgumentParser.print_help() 打印一条帮助消息
3. 小试牛刀
我们来使用argparse模块实现对命令行参数进行解析操作:
?小案例: 在命令行中求输入数字的平方
import argparse
parser = argparse.ArgumentParser(description="welcome to Juejin ")
parser.add_argument("square", help="display a square of a given number",
type=int)
args = parser.parse_args()
print(args.square**2)
复制代码
⚠️在Pycharm中运行该程序,是无法运行成功的,会提示你去命令行窗口运行文件
?PS: 我们可以在命令行中查看帮助文档如下
总结
本期,我们学习argparse模块提供对命令行参数及选项的解析方法,用于代替已经过时的optparse模块。
不管我们使用Linux还是Windows系统,或多或少都要使用到命令去操作,同理我们程序中有些步骤需要对命令行进行解析的情况,argparse 模块提供 parse_args() 对命令解析
以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心?????✈️
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END