argparse、optparse、getopt 三个模块都可以对命令行中的参数处理,但 optparse 模块已被 Python3.2、Python2.7 弃用;getopt 模块的API是来自C语言中的 getopt() 函数;argparse 模块是基于 optparse 的,使用方法相似,从 sys.argv 中解析参数,可编写用户友好的命令行界面,自动生成帮助和使用信息,对于无效参数可产生相应的错误提示。因此本文主要介绍 argparse 模块的相关用法。
官方样例
prog.py
1 import argparse 2 parser = argparse.ArgumentParser(description='Process some integers.') 3 parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') 4 parser.add_argument('-s', '--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)') 5 args = parser.parse_args() 6 print(args.accumulate(args.integers))
上述代码接收命令行中的所有整数,默认输出最大整数。通过可选参数 '-s' 或 '--sum',输出所有整数和。非整数输入会输出相应的错误提示。
创建解析器
1 import argparse 2 parser = argparse.ArgumentParser(description='Process some integers.')
通过上述方法创建了一个 ArgumentParser 实例对象,其中 description 参数是对该对象的描述。更多参数详见 官方文档 。
添加参数
1 parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') 2 parser.add_argument('-s', '--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')
通过 add_argument() 方法来添加参数,一共有两种参数。一种为位置参数,如:'integers';一种为可选参数,如:短参数 '-s' 或长参数 '--sum' 。由 argparse创建的解析器自带可选参数 '-h' 或 '--help',生成相应的帮助和使用信息。
该方法中的参数描述如下:
- metavar:指定帮助信息中的参数名称。本例指定 'N' 为 'integers' 在帮助信息中的名称。
- type:指定命令行中的参数类型。常见有 int、str、float 等。
- nargs:指定命令行中的参数数量。一般通过整数指定个数,本例中的 '+' 表示接受所有参数到一个列表中。
- dest:指定解析器的属性名。本例中的可选参数可通过 args.accumulate 来访问。
- const:指定常量值或一些动作。本例指定求和动作 sum 。
- action:指定参数操作。本例中的'store_const'操作为使用存储 const 关键字参数指定的值 sum 。更多动作详见 官方文档 。
- default:指定参数的默认值或一些动作。本例指定求最大值动作 max 。
- help:描述参数信息。
解析参数
1 args = parser.parse_args()
通过 parse_args() 方法默认接受 sys.argv 的参数,返回可获取属性的 namespace 对象。除此之外,还可通过 vars(args) 方法将该对象字典化,通过字典的方式访问属性。
总结
argparse 模块通过创建解析器,添加参数,解析参数三步完成对命令行参数的处理。