python3 argparse参数解析

自带的sys.argv[]解析一些简单的参数没什么问题,但是稍微复杂一些就工作量大了;
argparse是从python2.7引入的参数解析模块,功能非常强大,是一个全面的参数处理库

sys.argv

sys.argv是一个包含所有命令行参数的list, 第一个元素是当前执行文件的文件名

argparse

通过一个例子理解一下命令和命令参数

位置参数可选参数

先从最简单的开始,创建一个argparse实例

argparse自带了-h/--help参数,除此之外,test.py没有任何定义参数,也不能处理参数
我们现在定义一个位置参数,所谓的位置参数就是必须要有的参数,否则程序不能运行

注意"echo"可以为任意字符,这只是一个命名,但是别人并不知道你的"echo"参数是做什么的,我们再完善一下

我们现在定义一个位置参数,输出它的平方数

what? 不能运行,TypeError,argparse默认将参数的type定为str,我们改一下

很好,我们现在定义一个可选参数--verbose,用于显示详细信息

action='store' 保存参数值,默认为该动作
action='store_true' 表示将参数存储为布尔值True,就是说如果参数存在,则为True,否则为False
action='store_false' 与之相反
action='append' 将值保存到一个list中,若参数重复出现,则保存多个值
action='count' 记录参数的个数
action='version' 打印关于程序的版本信息,然后退出

熟悉命令行的可能知道,除了--verbose这种长选项外,更多的是-v这种短选项的格式

version 版本号

default 设定默认值

-v -vv -vvv 参数个数计数

required 表示该可选参数默认被请求,相当于必选

-q/--quiet 简洁输出

注意到一个问题,当-q -v同时出现时,会发生冲突,如何实现要么-q,要么-v

argparse的功能比这里演示的多得多,有需要的请看官方文档
还有一点,windows下命令参数可能用/v /verbose这种格式,argparse也是支持的,上面的全部例子在windows下都可以用这个格式