在前一篇文章中,我们已经了解了如何使用argparse的基本步骤,以及一些参数的大致概念,本章将继续深究每个参数的具体用处。
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
[name or flags]
含义为:添加一个参数。
如果参数名称前没有‘-’或‘--’则该参数为必填参数,如果程序运行时不给它赋值则程序将抛出异常
注:此时实际上也是位置参数,就是通过位置而非是 -
或 --
开头的参数来指定参数值。
比如,我们可以指定两个位置参数 x
和 y
,先添加的 x
位于第一个位置,后加入的 y
位于第二个位置。那么在命令行中输入 1 2
的时候,分别对应到的就是 x
和 y。
>>> parser.add_argument('x')
>>> parser.add_argument('y')
>>> parser.parse_args(['1', '2'])
Namespace(x='1', y='2')
如果参数前有‘--’,‘-’则为可选参数。在输入‘--参数’,‘-参数’ 后再赋值。
注意:其中‘--’来指定长参数,‘-’来指定短参数。实际上,短参数是长参数的别名,如果给别名赋值,相当于给长参数赋值。
[action]
参数动作,分为如下8类别:
store 保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。它通常用于给一个参数指定值
store_const 保存一个被 const 命名的固定值。当我们想通过是否给定参数来起到标志的作用,给定就取某个值,就可以使用该参数动作。
store_ture/store_false 保存相应的布尔值。这两个动作被用于实现布尔开关。
append 将值保存到一个列表中。若参数重复出现,则保存多个值。
append_const 将一个定义在const中的值保存到一个列表中。如果定义了相同的dest,则放入同一个列表中,否则就分别放入其参数名称下的列表中。
count 计算参数出现过的次数
help 打印解析器中所有选项和参数的完整帮助信息,然后退出。
version 打印关于程序的版本信息,然后退出
[nargs]
用来定义一个参数可以有多个值。
若nargs=N,则要求该参数提供N个值
若nargs=?,则要求该参数提供0或1个值
若nargs=*,则要求该参数提供0或多个值
若nargs=+,则要求该参数提供1或多个值
[dest]
解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线。
类似重命名,可以让两个不同的可选参数取一个参数名称,例如在action=append_const中那样运用。
[const]
用于给参数赋值,可以是数值,也可以是函数。
[default]
用于在命令行中不传参数值的情况下的默认取值,可通过 default
来指定。如果不指定该值,则参数默认值为 None
。
[type]
参数类型
就是解析器参数值是要作为什么类型去解析,默认情况下是 str
类型。我们可以通过 type
入参来指定参数类型。
argparse
所支持的参数类型多种多样,可以是 int
、float
、bool
等,比如:
也可以将函数作为参数传进去,从而进行类型检查和类型转换,比如:
[choices]
就是限定参数值的内容,通过 choices
入参指定。如果超出先定数值的内容,就会报错。
有些情况下,我们可能需要限制用户输入参数的内容,只能在预设的几个值中选一个,那么 可选值
就派上了用场。
比如: parser.add_argument('--mode', choices=('read-only', 'read-write'))
[required]
可选参数是否可以省略 (仅针对可选参数),当required为True时,在输入命令时需要显示该参数。
[metavar]
在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称。
[help]
参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息。
以上就是parser内的各种参数的结石和用法。
感谢:
https://mp.weixin.qq.com/s/WA--NZ2TPuIaIj4jnKZS6A