argparse 的简单使用
常规使用
基本流程
import argparse
: 导入 argparse 模块;parser = argparse.ArgumentParser(description="program to test")
: 创建一个 parser 参数解析器;parser.add_argument()
: 添加命令行需要的选项及参数,同时可以对其进行描述和限制;args = parser.parse_args()
: 进行参数解析;
程序用法帮助
argparse.ArgumentParser(description="program to test")
- 用法:
argparse.ArgumentParser(description="write usage here")
- 示例:
import argparse |
可以看到,当输入 -h
或者 --help
程序会输出相应的程序描述。
位置参数
position arguments
- 用法:
parser.add_argument(“d”)
,注意不带-
,这要求用户必须输入该参数; - 示例:
import argparse |
可以看到,当使用位置参数时,如果不输入参数时,程序会报错提醒输入位置参数;正确输入参数时,程序正常运行。
可选参数
optional arguments
- 用法:
parser.add_argument(“-d”,"--dir")
,这里可以使用一个-
也可以使用两个。一个代表参数,两个代表长参数。 - 示例:
import argparse |
可以看到,参数解析器优先选择长参数作为属性的键值,当使用可选参数时,-d
和 --dir
均可以实现参数的接收;不使用时,该参数时不存在的。
add_argument 常用属性介绍
type
参数类型
- 用法:
parser.add_argument(type = int)
,这里默认为 str 类型,当使用其他类型时会自动将输入进行类型转换,若无法转换则会出错。 - 示例:
import argparse |
可以看到,当按要求输入 int 类型数据时,程序正常接收并运行;当使用 “test” 该类字符串数据,将会报错,并提示所需数据类型。
choices
可选值
- 用法:
parser.add_argument(choices = ["test","main"])
,这里确定该参数输入只能从choices中进行选择。 - 示例:
import argparse |
可以看到,当我们输入 choices 中的值时,程序正常接收并运行;当使用不在该列表中的数据时,将会报错,并提示可选数据值。
default
参数默认值
- 用法:
parser.add_argument(default = "test")
,这意味着当该参数不进行输入时,会取默认值作为参数。 - 示例:
import argparse |
可以看到,当启用参数并进行输入时,参数随之变化;当我们不输入参数时,参数会取默认值。
:::tip
要注意的是,这类参数必须是可选参数,当使用位置参数时,程序会强制要求你输入参数,默认值就不会起作用(反正我尝试了多次发现都是不行的)
:::
nargs
参数数目
- 用法:
parser.add_argument(nargs = 5)
,可以指定一个参数后面可以跟随几个值。其中参数设置有如下类型:
类型 | 效果 |
---|---|
num | 固定 num 个值,值会放到一个列表中。 |
” ? “ | 可以跟随值(1 个),也可以不跟随值。 |
" * " | 可以跟任意多值,参数会放在列表中。 |
" + " | 最少跟一个值,参数会放在列表中。 |
- 示例:
import argparse |
可以看到,这里我们使用的是 ” * “,当启用参数并进行输入时,我们可以输入 0 个,也可以多个,最终会放在列表里面。
action
动作
- 用法:
parser.add_argument(action = "store_true")
,这里是对该参数的动作。该部分
类型 | 效果 |
---|---|
store | 保存参数值(默认 action) |
store_const | 与关键字const配合使用,保存关键字const的值(类似于 default,但是不可修改) |
store_true | 保存值为True(类似于带开关的 default = True) |
store_false | 保存值为False(类似于带开关的 default = False) |
append | 保存多次选项值为列表(需要多次使用 -d 进行参数输入) |
append_const | 与关键字const配合使用,保存关键字const的值为列表(往往多个不同选项值需要存储到相同成员列表) |
- 示例:
import argparse |
可以看到,当我们不使用 -d
参数时,程序会停留在判断阶段;使用后进入输出流程;使用 -t
参数时,多次使用可以进行多次值的添加;使用 -m
参数时,会将 const 值添加进入,当尝试修改时,会出现报错信息。
其他参数
- required: 表明参数是否是必须的,只对可选参数有效。
- help:对该参数的简要说明。
- metavar:用于指明在帮助说明中,该参数有意义的值是多少。
- dest:用于指明该命令行参数在获取参数时候的属性是什么(不指定时,按照长参数命名优先的策略)。
- const:如果命令行没有传入该参数,const 指定该参数的默认值,在某些 action 与 nargs 类型下才起作用。