python之命令行参数解析模块argparse

时间:2023-12-25 21:43:31
"""
argparse模块使得写用户友好性命令行接口很容易,程序定义所需要的参数,argparse会从ays.argv中提取出这些参数。argparse模块也能自动的产生帮助和用法信息,并且可以报告用户
的无效参数错误
sys.argv[0]表示程序所在路径
ays.argv[1:]表示命令行的所有参数,是string的列表
""" import argparse parser = argparse.ArgumentParser(description = "Process some integers")
parser.add_argument("integers",metavar="N", type = int, nargs = '+', help = "an integer for the accumulator")
parser.add_argument('--sum',dest ='accumulate',action='store_const',const = sum,default = max, help = 'sum the integer(default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))

运行结果:

zhuh@baojp-24000649:~$ python3 arg1.py -h

usage: arg1.py [-h] [--sum] N [N ...]

Process some integers

positional arguments:
N an integer for the accumulator optional arguments:
-h, --help show this help message and exit
--sum sum the integer(default: find the max) zhuh@baojp-24000649:~$ python3 arg1.py 1 2 3 4
4
zhuh@baojp-24000649:~$ python3 arg1.py 1 2 3 4 --sum
10

1. Create parser

使用argparse的第一步是创建一个ArgumentParser的对象:

parser = argparse.ArgumentParser(description = "The description for the program")

ArgumentParser对象会保存所有从命令行提取python数据类型所必须的所有信息。

2.Adding arguments

用程序所需要参数的信息填充ArgumentParser对象的过程是通过调用add_argument()函数完成。

parser.add_argument("integers",metavar="N", type = int, nargs = '+', help = "an integer for the accumulator")
parser.add_argument('--sum',dest ='accumulate',action='store_const',const = sum,default = max, help = 'sum the integer(default: find the max)')

之后,调用函数parse_args()会返回两个属性(attribute),intergers和accumulate。intergers是含有一个或者多个整数的list,accumulate是sum()或者max()函数。

3.Parsing arguments

parse_args()函数会检查命令行,把每一个参数转换成正确的类型并且调用正确的action。

4.class argparse.ArgumentParser

class argparse.ArgumentParser(prog=Noneusage=Nonedescription=Noneepilog=Noneparents=[]formatter_class=argparse.HelpFormatterprefix_chars='-'fromfile_prefix_chars=Noneargument_default=Noneconflict_handler='error'add_help=True)

add_argument()常用的参数:

dest:如果提供dest,例如dest="a",那么可以通过args.a访问该参数

default:设置参数的默认值

action:参数出发的动作

store:保存参数,默认

store_const:保存一个被定义为参数规格一部分的值(常量),而不是一个来自参数解析而来的值。

store_ture/store_false:保存相应的布尔值

append:将值保存在一个列表中。

append_const:将一个定义在参数规格中的值(常量)保存在一个列表中。

count:参数出现的次数

parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")

version:打印程序版本信息

type:把从命令行输入的结果转成设置的类型

choice:允许的参数值

parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

help:参数命令的介绍

参考:python文档