python命令行参数解析包argparse

       先看如下从官方文档的例子,假设如下代码所在的脚本名为prog.py。

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 integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

看如下输出运行和输出(截图均来自官方文档):

python命令行参数解析包argparse_第1张图片

python命令行参数解析包argparse_第2张图片

       看不明白不要紧,看了下面的介绍之后再回头看这个例子和结果就可以明白了。下面针对重要的对象和函数以及主要的参数做一个介绍,更详细的可以参看官方文档。

ArgumentParser对象属性

       ArgumentParser对象时argparse包的基本对象,基本所有的参数解析和操作都要基于这个对象,所以需要先构造这个对象,该对象构造方法具有较多的参数,同时也是该对象的属性,下面介绍用的较为频繁的几个。

prog: 表示程序名称,默认为命令行输入的脚本名称,也可以自行设定。

usage: 运行-h命令后输出的对脚本命令行使用方法的说明,默认显示参数以及可选与否等信息。

description: 运行-h命令后,输出的对整个脚本功能的描述,显示在usage后面。

add_argument()函数的参数

       在构造ArgumentParser对象后,需要利用利用add_argument函数来添加参数,并进行相关的设置。每调用一次该函数表示添加一个参数,该函数自己也有很多的参数,以实现相应的功能,如下所示。

name: 在函数的最开始位置,表示位置参数。区分可选参数,不用可选标记。即添加的参数名称不需要-或者--标志,表示位置参数,传参时必须用位置传参,不能用关键词传参。

flags: 以-或--标记,表示可选参数。在调用一次add_argument函数添加该可选参数时,可以传入多个以-或--开头的参数名,同表示该参数;要注意的是,一旦标记为可选参数,每个参数名都要标记为可选的,不然会抛出异常。关键词传参,用=连接。

dest: 命名空间中的参数名。对于多个可选参数的选择原则:如果有长选择标志(--)参数,则以从左到右第一个长选择参数为值,如果没有,则以第一个短选择标志(-)参数为值。选定可选参数之后,再以后面的可选参数的处理方式进行处理,得到dest的最终值,即在命名空间中的值。对于位置参数,dest的值直接就是参数名本身,对于可选参数,dest值是对原参数名做如下处理后得到的值:去除前后的-,把中间的-转为_。如果是在help信息下直接用dest的值展示出来的话,那么还会把字母转为大写。当然,可以直接设置dest的值来表示相应参数在命名空间中的名称。

metavar: 在help信息下展示出来的变量名称,默认是用dest的值,并对可选参数用大写转化。此外在显示时,还可以用metavar来设置显示时的参数名称,但是不会改变命名空间中的名称。

nargs: 设置参数的识别行为。N(一个整数)表示将该参数后面的N个元素归为一个List并传给该参数;'*'匹配参数后面跟着的所有的值,返回一个list给参数;'+'表示该参数后面至少得有一个值,并匹配所有值返回list。如果没有设定nargs,默认情况下返回的参数不是list,是字符串。要注意的是,设定了*或+时,传参的方式不再是=传,而是直接用空格隔开,多个参数也是用空格隔开,然后会以字符串列表的形式传给相应的参数变量。

default:设置参数的默认值。如果命令行参数没有这个参数的值,那么自动使用默认值,该值可以时任何python对象,比如函数。

type: 设置参数类型。默认传入的参数类型是string,但是可以通过type参数设置类型,比如int,float,甚至设置为open,为file对象。实际上就是可以设置任何callable的对象f,然后会将参数s转为f(s)。

required: 可以设置required=True,表示该参数是必须从命令行输入的,如果命令行没有该参数,则会抛出异常。

help: 当运行-h命令时,每个参数显示的相应的帮助信息,以解释该参数的含义和用法等信息。

parse_args(args=None,namespace=None)函数

       该函数用以解析参数,args参数默认为命令行输入的string,将参数string解析后把结果赋值给参数,并把参数作为属性传给一个命名空间对象,最后返回该命名空间,而后可以通过访问该命名空间的属性获取具体参数的值。所以,要从命令行获取参数值,必须先调用ArgumentParser对象的parse_args函数,然后通过返回的namespace对象获取参数的值。

 

你可能感兴趣的:(python编程)