简介
Argparse
是标准库提供的命令行解析模块,它基于废弃模块optparse
,类似模块还有getopt
,对应C语言中的getopt
函数。
相关概念
linux用户应该对以下4个命令不陌生,这4个命令说明了ls
命令4种参数用法。
ls
ls python
ls -l
ls --help
第一个命令不带参数
第二个命令中的python是位置参数,命令如何处理位置参数完全取决于参数所处的位置,类似的如cp
命令基本用法中的第一个参数和第二个参数。
第三个命令中的-l
是可选参数
第四个命令中的--help
参数是默认的可选的帮助参数
基本用法
程序1:argparse _usage.py
import argparse #导入argparse
parser = argparse.ArgumentParser() #初始化解析器
parser.parse_args() #解析命令行
上述代码运行后只能使用--help
参数或者它的缩写-h
,即--hep
参数是默认添加的。
$ py -3 argparse _usage.py
$ py- 3 argparse _usage.py --help
usage: argparse _usage.py [-h]
optional arguments:
-h, --help show this help message and exit
进阶用法1:添加位置参数
程序2:argparse _usage.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)
相比于程序1
:
parser.add_argument("echo")
使用了parser
的add_argument()
方法,这是argparse
模块用于定义接受那些命令行参数(选项)的方法。该方法使用参数echo
,表明echo
为位置参数。
parser.parse_args()
的返回值为命令行中输入的参数数据,数据结构为Namespace
,可以理解为类似字典结构的键值对,即属性:属性值
,访问属性(键)时可以使用object.attribute
式的语法。在argparse
模块定义中包含Namespace
类的定义。类似 Namespace
的对象可以使用内置函数vars()
转换为字典。
$ py -3 argparse _usage.py
usage: argparse _usage.py [-h] echo
argparse _usage.py: error: the following arguments are required: echo
$ py -3 argparse _usage.py --help
usage: argparse _usage.py [-h] echo
positional arguments:
echo
optional arguments:
-h, --help show this help message and exit
$ py -3 argparse _usage.py foo
foo