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 模块的介绍就到这里,也不知道整理的全不全,如果大家有补充的,欢迎在评论区里留言啊,一定会采纳的哦~