『Argparse』命令行解析
一、基本用法
Python标准库推荐使用的命令行解析模块argparse
还有其他两个模块实现这一功能,getopt(等同于C语言中的getopt())和弃用的optparse。因为argparse是基于optparse,所以用法很类似。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", help="increase output verbosity",
action="store_true", type=str
)
args = parser.parse_args()
if args.verbose:
print "verbosity turned on"
运行如下,
$ python prog.py -v verbosity turned on $ python prog.py --help usage: prog.py [-h] [-v] optional arguments: -h, --help show this help message and exit -v, --verbose increase output verbosity
注意帮助信息也有相应的变化。
二、参数介绍
1.解析器创建
解析器创建的同时可以为解析器添加程序说明,运行 python 文件 时即可显示,
可以自行对比各个参数和截图的位置理解一下参数意义
import argparse parser = argparse.ArgumentParser(prog="demo_for_argparse", description = "A demo program", epilog = "The end of usage") parser.print_help()
2.添加待解析参数
parser.add_argument("name") parser.add_argument('-a', '--age', type=int, required=True) parser.add_argument("-s", "--status", choices=['alpha', 'beta', 'released'], type=str, dest='myStatue') parser.add_argument("-v", "--version", action='version', version='%(prog)s 1.0') # version为action的可选参数,打印版本信息 parser.print_help()
参数名称 | 功能 |
name or flags | 名称或标记 |
action | 解析后触发指定操作,需要后续 参数 |
nargs | 待解析参数数目 |
const | actions和nargs可能用到的值 |
default | 默认值 |
type | 解析后参数保存类型 |
choices | 参数的可选值 |
required | 是否必须提供,默认False |
help | 参数说明 |
dest | 解析后保存的对象名称 |
3.解析参数
args = parser.parse_args() print(args)
parse_args会检查输入参数是否正确,发现错误会报错且给出正确的用法,解析后的args.属性名即可调用,但是,属性名是全称,缩写不可以
args, unparsed = parser.parse_known_args() print("{},{}".format(args, unparsed)) print(args.age)
这种解析方式接收到意外的参数键值时不会报错,会以list形式存储到unparsed中: