argparse是Python标准库中推荐使用的命令行解析模块,
其前身是optparse库,从Python 2.7开始,optparse库被弃用,
替代它的就是argparse库,除此之外,标准库中的getopt库也提供了相似的功能。
一个命令行的工具应该满足以下几个要求:
- 命令可以不带任何可选参数运行,即提供默认可选参数
- 可以提供指定可选参数覆盖默认值
- 提供一小段帮助文档,可以通过命令直接获取
基本使用
首先从一个不带任何参数的脚本开始,新建一个脚本,输入以下内容:
从上面可以看出,argparse模块提供了两个个基本功能:
--help
或-h
参数显示基本用法
- 对于错误的位置参数或可选参数给出提示
注:这里的位置参数就相当于函数中的位置参数和关键字参数
参数添加
为命令行工具添加参数可以使用ArgumentParser.add_argument
方法,
然后可以在脚本中调用ArgumentParser.parse_args
方法获取脚本执行时设置的参数值
函数原型如上,参数含义分别为(其中加粗的参数为将会涉及到的):
name or flags
: 位置参数的名称(如:foo)或可选参数的标识(如:-f, –foo)
action
: 参数出现在命令行中所要执行的操作类型,可以理解为如何读取参数
nargs
: 当前参数可以从命令行中读取几个参数值,如为一个参数指定多个值
const
: action
或nargs
所使用的一个常量值
default
: 当参数在命令行中不存在时的默认值,注意,这里是不存在时的默认值,而不是没有指定值时的默认值
type
: 参数的数据类型,可以用来对命令行参数进行数据检查,默认读取的参数值都是字符串
choices
: 参数的可选值列表
required
: 参数是否必须,对于位置参数来说,默认为True,而可选参数默认值为False
help
: 参数简介,会在-h/--help
指令下显示出来
metavar
: 在用法简介帮助信息里的参数名称
dest
: 参数在ArgumentParser.parse_args
方法返回值中的属性名
接下来就来分别看一下位置参数与可选参数的使用方法
位置参数
可选参数
- 添加可选参数的时候,可以提供一个短参数选项(-v)和一个长参数选项(–verbose),也可以省略短参数
action='store_true
表示参数值储存为True,即在命令行中提供参数时parser.parse_args
获取的参数值为True,否则为False
同时使用位置参数、可选参数
冲突选项
有些选项的作用相反,不可以同时使用,为了加上这样的限制,
可以使用ArgumentParser.add_mutually_exclusive_group
方法
参考链接: https://docs.python.org/3/howto/argparse.html