argparse 模块是python的标准库,是一个命令行解析(分析)库。
可以处理命令行中的:可选参数 和 位置参数
命令行中的:位置参数 是必选的,前面不需要加 -
命令行中的:可选参数 是可选的,前面需要加 -来指定可选参数,如 -h(--help) -t -s(--src) -d(--dst) -n(--num) ....
命令行的格式:
cmd>> python xx.py [可选参数1 可选参数2 ...] 位置参数1 位置参数2 ...
argparse官方文档:
https://docs.python.org/zh-cn/3/howto/argparse.html
导入:
import argparse
实例化一个解析器:
parser = argparse.ArgumentParser(description='描述脚本的作用'),参数如下:
prog 可选,程序脚本的名称,默认值为:sys.argv[0]。
usage 可选,程序脚本的使用说明,默认值为:根据参数自动生成。
description 用于描述脚本的功能作用,默认为空。一般只指定description即可。
epilog 可选, 显示完-help信息后的结尾文本。
prefix_chars 可选,-命令的前缀,默认是"-" 。
add_help 可选,是否增加-h/–help选项,默认是True。
添加命令行的位置参数(positional arguments):
语法:parser.add_argument(dest,...,name=value,...)
parser.add_argument(dest='w',nargs='*', type=argparse.FileType('br'), help='显示帮助的文本')
dest 可以指定多个dest。字符串类型。给位置参数或可选参数关联的名字而已。
name 可选,可以指定多个name。表示位置参数或可选参数的标识符名字。
metavar 可选,字符串类型。可以描述dest的类型。
nargs 可选,指定位置/可选参数后面的value有多少个,默认为1。可以指定:"*"(0个或多个value)、"+"(1个或多个value)、"?"(0个或1个)、整数。
type 可选,指定位置/可选参数的数据类型,默认为str。可以指定是type=argparse.FileType('w'),参数需要指定模式,默认为'r'模式。
choice 可选,指定位置/可选参数的取值范围。
添加命令行的可选参数(optional arguments):
语法:parser.add_argument(option_string,option_string,...,name=value,...)
parser.add_argument('-t', '--test', action='store_true',help='显示帮助的文本')
action 可选,字符串类型,当读取的参数中出现指定参数的时候的行为。取值:'store_true'、'append_const'
const 可选,可以指定内置函数(不需要带括号)
default 可选,表示位置参数和可选参数的默认值,可以指定python中提供的类型 或 内置函数(不需要带括号)。默认值是default=sys.stdout。
required 可选,表示可选参数必须输入,只支持可选参数的设置。指定布尔值类型,默认为True。
注意:const 和 default 参数可以同时存在,同时存在的使用规则如下:
如果cmd命令行中传入了这个 位置参数,则使用const指定的值,或调用const指定的内置函数
如果cmd命令行中没传入这个 位置参数,则使用default指定的值,或调用default指定的内置函数
打印帮助信息:
parser.print_help()
获取 位置参数 和 位置参数 进行解析:
args = parser.parse_args() #返回一个Namespace对象。
#该Namespace对象保存着 位置参数 和 可选参数的信息。
import argparse
import sys
parser = argparse.ArgumentParser(description='在命令行对整数求和')
parser.add_argument(
dest='integers', metavar='int', nargs='+', type=int,
help='要求和的整数'
)
parser.add_argument(
'--log', default=sys.stdout, type=argparse.FileType('w'),
help='把求和后的数写到sys.stdout控制台中'
)
args = parser.parse_args()
print(args)
args.log.write('%s' % sum(args.integers))#在命令行中输出相加后的结果
args.log.close()#关闭
import argparse
import sys
parser = argparse.ArgumentParser(description='两个数相加')
#添加位置参数
parser.add_argument(
dest='add1',
type=int,
nargs=1, help='第1个加数'
)
parser.add_argument(
dest='add2',
type=int,
nargs=1, help='第2个加数'
)
#添加可选参数
parser.add_argument(
'-e', '--eg', help='用法:python %s 4 5'%sys.argv[0]
)
args = parser.parse_args()
print(args)
print("两数相加: %s + %s = %s "%(args.add1[0],args.add2[0],args.add1[0]+args.add2[0]))
import argparse
parser = argparse.ArgumentParser(description='用来处理整数列表的两个操作:求和、求最大值')
parser.add_argument(
'integers', metavar='intNum',
type=int, nargs='+', help='累加的整数'
)
parser.add_argument(
'--sum',dest='calcFn',action='store_const',
const=sum,default=max,help='对整数列表求和(默认值:查找最大值)'
)
#如果不传 --sum 时,则调用 max 内置函数,对integers列表进行求最大值并返回
#如果传 --sum 时,则调用 sum 内置函数,对integers列表进行求和并返回
args = parser.parse_args()
print(args)
print(args.calcFn(args.integers))
----结束----
仅学习。