python 3 之 Argparse 模块简介【实现解析命令行读取参数】
马富天
【摘要】今天接触了一个新知识,叫做 argparse 模块,是一个在当前实际工作中非常有用的 python 模块,所以赶紧写了篇文章记录一下,也分享给大家,能够更好的在实际工作中使用。
(一)argparse 模块简介
有关 argparse 模块的 Python 3.x 官方文档地址是:https://docs.python.org/3/howto/argparse.html。
1)argparse 模块是 python 的一个命令行解析包,可以十分方便的对 python 文件进行命令行读写
2)argparse 模块是 python 中自带的模块,不需要再安装
3)使用时先导入模块,import argparse
(二)一般方法,利用 sys.argv
使用 sys.argv 可以将脚本后的参数依次读取出来,并且会读取进来的数默认是字符串类型。比如有个 demo.py 脚本:import sys
print("Input argument is %s" %(sys.argv))
在 shell 中执行,并会得到如下:>python .demo.py how are you 123
Input argument is ['.\demo.py', 'how', 'are', 'you', '123']
(三)argparse 模块使用方法
二话也不多说,下面展示的代码中给出了对应的注释,直接看代码、看注释、复制到代码运行一下,你就懂了。import argparse
if __name__ == '__main__':
# 创建命令行解析器句柄
parser = argparse.ArgumentParser(description='自定义描述信息,本脚本执行功能为:演示 argparse 模块')
# 没有横杆开头的是必填参数,并且按照输入顺序进行设定
parser.add_argument('positionArg',help='定义必选参数 positionArg(help 属性为提示信息)')
# --verbosity1:两个横线 -- 开头,指的是变量名或者称为标签
# -v1:一个横线 - 开通,指的是变量的别名或者标签别名
parser.add_argument('--verbosity1', '-v1', help='定义可选参数 verbosity1')
# 定义可选参数 state
# 设定 action='store_true' 表示该选项不需要接收参数
# 若不设 action,则默认是需要接收参数的,否则会报错
parser.add_argument(
'--state',
'-s',
action='store_true',
help='若有 "-s" ,则 state = Ture,否则 state = False'
)
# 执行参数的类型
parser.add_argument(
'-int',
'-i',
type=int,
help='指定参数类型(默认是 str)'
)
parser.add_argument(
'-c',
help='设置参数的可选值,即输入值必须为 choices 列表中的某个值,若未设置则默认值为 None',
choices=['one', 'two', 'three', 'four'],
)
parser.add_argument(
'--default',
'-d',
help='default 可以设置默认值',
choices=['one', 'two', 'three', 'four'],
default = 'one',
)
# 参数是否必填,使用 required 属性
parser.add_argument(
'--required',
'-r',
help='required 的值为:True 或者 False',
required=True,
)
# 最后:获取、解析参数的值
args = parser.parse_args() # 返回一个命名空间
print(args)
params = vars(args) # 返回字典
print(params,type(params))
在 shell 命令行中输入:> python .demo2.py start -v1 10 -s -r helloworld
Namespace(c=None, default='one', int=None, positionArg='start', required='helloworld', state=True, verbosity1='10')
{'positionArg': 'start', 'verbosity1': '10', 'state': True, 'int': None, 'c': None, 'default': 'one', 'required': 'helloworld'}
'dict'>
查看帮助:-h 或者 -help,如:
> python demo.py -h
有关于 Argparse 模块的介绍就到这里,也不知道整理的全不全,如果大家有补充的,欢迎在评论区里留言啊,一定会采纳的哦~