【python】argparse模块——命令行解析
argparse模块安装
pip install argparse
# argparse是python的自带标准库,一般不需要额外安装。用pip安装会提示已经存在。
argparse模块导入
import argparse
# 导入argparse模块
argparse模块基本语法
parser = argparse.ArgumentParser(description = " ")
# 设置一个解析器类parser
parser.add_argument(name or flags[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
# 定义一个命令行参数。[]中是add_argument的可选参数
# name or flags接受选项参数或者是位置参数。“--my_parameter"是选项参数的格式,--后面的是该命令行参数的名字,自己定义。位置参数的命令行参数的名字没有固定格式。
args = parser.parse_args()
# 解析命令行参数
# args是一个命名空间:Namespace
----------------------------------------------------------------------------------------------------------------------------
# Namespace(A=None, B=1)
# 假设args这个命名空间内容如上
# python中输入args.A,什么都不会打印
# python中输入args.B,打印1
# action相关
# action参数有七种可选,代表可以在解析到一个命令行参数时进行触发的七种不同操作
# 1.store(默认) —— 保存命令行参数值
praser.add_argument("--my_store")
----------------------------------------------------------------------------------------------------------------------------
# test.py文件内容
import argparse
parser = argparse.ArgumentParser(description = "My argparse test")
parser.add_argument("--my_store")
args = parser.parse_args()
print(args)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并设命令行参数--my_store为1
python test.py --my_store 1
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
Namespace(my_store='1')
# 2.store_const
praser.add_argument("--my_store_const", action = "store_const")
# 3.store_ture
# 4.store_false
# 5.append
# 6.append_const
# 7.version
# nargs相关
# nargs指定一个命令行参数选项后需要参数的个数,默认是1
parser.add_argument("--my_nargs") # 一个参数。如果没有参数,且name or flags是位置参数时会报错。
parser.add_argument("--my_nargs", nargs = "?") # 多与const参数一起使用
parser.add_argument("--my_nargs", nargs = "*") # 多个参数。如果没有参数,且name or flags是位置参数时返回Namespace的是空列表。除了选项参数且没有参数时返回空外,不管几个参数,返回给Namespace的一定是一个列表。
parser.add_argument("--my_nargs", nargs = "+") # 至少一个参数。如果没有参数,且name or flags是位置参数时会报错。多个参数时返回给Namespace一个列表。
parser.add_argument("--my_nargs", nargs = number) # 指明参数的数量number,不符合则报错。多个参数时返回给Namespace一个列表。
# const相关
# 常与nargs = "?"一起使用。当参数为空时,获取default的值。当有参数选项,但是不注明参数值时,获取const的值
----------------------------------------------------------------------------------------------------------------------------
# test.py文件内容
import argparse
parser = argparse.ArgumentParser(description = "My argparse test")
parser.add_argument("--my_const", nargs = "?", const = 1, default = 0)
args = parser.parse_args()
print(args)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件
python test.py
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
Namespace(my_const=0)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并设命令行参数--my_store为2
python test.py --my_store 2
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
Namespace(my_const=2)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并设命令行参数--my_store为2 4(两个参数)
python test.py --my_store 2 4
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容(报错)
test.py: error: unrecognized arguments: 4
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并添加命令行参数--my_store,但后面没有具体参数
python test.py --my_store
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
Namespace(my_const=1)
# default相关
# default是命令行参数的默认值,如果没有default参数,则默认是None,即空。
# type相关
# type是命令行参数的数据类型,主要有int,bool,str等。
# choices相关
# choices用来指明参数的范围,范围外则报错
parser.add_argument("--my_choices", choices = [1, 2, 3])
parser.add_argument("--my_choices", choices = ["a", "bc", "d"])
# required相关
# required设置在命令中显示参数,当required为True时,在输入命令时需要显示该参数
# help相关
# 这个命令行参数的描述参数,相当于自己写的帮助文档。
# metavar相关
# metavar设置help输出信息
# dest相关
# dest指定参数的位置
parser.print_help()
# 输出description和help的信息
----------------------------------------------------------------------------------------------------------------------------
# test.py文件内容
import argparse
parser = argparse.ArgumentParser(description = "My argparse test")
parser.add_argument("--A", choices = ["a", "bc", "d"])
args = parser.parse_args()
parser.print_help()
print(args)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并设命令行参数A为“a”
python test.py --A "a"
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
usage: test.py [-h] [--A {a,bc,d}]
My argparse test
optional arguments:
-h, --help show this help message and exit
--A {a,bc,d}
Namespace(A='a')
结语
如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
手打很辛苦,如果我的文章对您有帮助,转载请注明出处。