其他分享
首页 > 其他分享> > argparse用法及常见参数说明

argparse用法及常见参数说明

作者:互联网

       学习python的时候,发现了很多大神喜欢用argparse,的确很好用,因为这东西可以通过设置default参数直接(run)运行,也可以通过与命令行(local)交互设置。然后我就在网上寻找教程,但是的确没找到什么详细的argparse教学。arparse源文件有2500多行,直接通过源码学习的确不方便,尤其是对于正在学习python的人。

 argparse包源程序
       本人作为python小白,自己学习的时候整理了一下argparse的一些基本用法,把常用的介绍一下。本人非计算机专业,在描述的时候可能有些用词不是太专业,也希望各位能指正错误。

      argparse是python自带的命令行参数解析包,可以用来方便地读取命令行参数。重点:不用额外pip安装!

        上图显示的应该算是argpase最简单的写法,首先要导入包argparse,ArgumentParser()是一个类,add_argument和parse_args是里面的两个方法,add_argument是添加参数,parse_args是用来解析参数。最后打印出参数值。

         add_argument可以添加两类参数,一个是optional argument (可选参数)和, 一个是positional argument(位置参数)。

      这种前面有“--”或者“-”的是optional argument可选参数,约定俗称的写法是“--”后面跟完整参数名,“-”后面是简写,用多个“-”后面加参数名也可以,不管是“-”还是“--”只是一种参数的不同写法。

        前面不加“-”的是positional argument位置参数,如果add_argument加入了这个参数,就必须给它赋值。这个参数用的比可选参数,也就是前面加“-”的要少。

       argparse的运行方法和一般运行方法一样,python+文件名.py +参数+参数值。一般的argparse命令都会有有一个-h或者--help的方法查看本文件用法介绍和参数情况,如上面那个简单的python文件,通过python start.py –h 可以看到start.py文件的参数使用方法。

      如上图。首先usage告诉我们用法。有一个positional argument位置参数L,两个optional arguments –h或--help和-p或者--pp。 

       上图,如果在命令行输入python start.py -p 2 L0(见红字1处。注意,-p、2和L0之间用空格分割),意思是给-p(或者--pp)赋值为2,给L赋值为字符“L0”。文件里面print(args.pp, args.L)就会打印-p(或者--p)和L的值,如下图。可以看出positional argument复制不需要写参数名,而optional argument赋值需要写参数名。给optional argument参数赋值写在前面,positional argument写在后面,且positional argument必须赋值否则或报错。见红字2处,给L赋值“L0”,没有给-p(或者--pp)赋值,则显示-p(或者--p)为none。见红字3处,给-p(或者--p)赋值2,没有给L赋值,则报错。

        下面介绍点常见的用法。见下图。文件名叫demo.py。这个文件是通过给一个设置长(-l)宽(-w)高(-he)来计算长方体体积。为什么“高”不用“-h”?因为如果用“-h”,不是和帮助“-h”重名了吗!!!

       通过parse_args()方法可以解析参数,并把参数复制给args,args.w就可以获取w的值。这里文件我只写了一个‘-’的optional argument,如果给宽度两个optional argument,比如‘-w’, ‘--width’,那么访问就要通过args.width来访问宽度值。因为args优先找‘--’后面跟着的那个名称,没有就找‘-’后面的。

      从上图中的代码会发现ArgumentParser()初始化也有参数,有哪些参数?见下图(python3.8,好像3.9又加参数了)。这些参数都不怎么常用,我看了很多基本都是括号里空着,我介绍两个常用的,一个是description,顾名思义,就是介绍程序是干嘛的,比如我在代码里写的,“计算长方体体积”,在帮助文件里面就会显示这段话,见图demo;再介绍一个参数prog,这个参数是重命名帮助里面的程序名,默认的是sys.argv[0]也就是程序文件名。 

        运行下面的demo.py,通过parser.print_help()看到帮助文件,如下图红色内容。description的内容“计算长方体体积”会显示在usage下面一行,通过prog,原来的demo.py变成了DE,但是在命令行操作的时候仍然要使用python demo.py ……,因为文件名没变(真心觉得prog这个没啥用)。

demo
        再看add_argument()里面的内容。为了简化,这里没有使用“--”的optional arguments。这里()里面加了很多几个很常见的关键字参数,一个是“help”,用处是可以对这个参数进行描述,且在帮助里面可以看到(见上图黄色框内),比如“w”为长方体的宽度;关键字参数是“type”限制了参数的类型,比如计算长方体体积,只接受int类型,如果赋值是个其他类型,如字符串类型,则会报错;第三个常用关键字是“default”,既设置默认值,比如demo.py中设置he(长方体高度)的默认值为3。default很常用,因为设置默认值后可以直接点击“run”,如果想重新赋值,可以在命令行里赋值,下面就对demo.py文件进行操作。

        首先,长度l赋值为3,宽度为3,高度为2,见下图红色框内,计算出来的体积为18(3*3*2=18);如果长度l赋值为3,宽度为3,高度没有赋值(见下图黄色框内),则高度he使用默认值3,计算出体积为27(3*3*3=27),如果给宽度w赋值为3.0,不是int型(见下图蓝色框内),那就会报错。

 


       再介绍点常用的add_argument里面的关键字参数,“choice”。文件名叫demo2.py。下面的程序是通过输入一个人性别、年纪和身高,然后打印输出。运行程序打印帮助文件后,显示性别-s(或者“--sex”)后面有{male,female},也即是关键字参数choice里面的内容,这里的意思是性别只能从male和female里面选,这样符合逻辑,虽然现在科学上证实没用完全意义上的男人或者女人。

 

        这里还有一个需要注意的是,见黄色框内,年龄参数为‘---a’和‘-age’(a前面三个‘-’),这次没有按照默认的方式‘-a’,‘--age’方法来命名optional arguments,但是从获取参数的方式看需要用args.a来获取年龄的参数值,再次说明解析后优先赋值的是前面“-”多的参数名。

 


        在命令行输入python demo2.py -s male -age 30 -he 175,输出“性别male, 年龄30, 身高175”。见下图。

         如果输入python demo2.py -s dog -age 30 -he 175,则程序会报错,并告知要从‘male’和‘female’中选。见下图。

 


       再介绍两个常用的,dest和nargs,源文件里面的说明见下图,感觉dest也不是很常用。

 

 

        dest用处是重新命名参数,nargs的作用是确定命令行参数的个数,有四个参数,具体作用见上图,应该看得懂。

      demo3.py文件和demo2.py作用差不多,输入一个人性别、年龄、身高,另外加上父母名字,最后输出。性别参数-s(--sex)加了dest=‘sex_of_person’,获取该参数值的时候就不能args.sex,而是要用args.sex_of_person来获取,否则会报错。见下图红色框内容。

       默认输入的参数个数是1,但是通过nargs可以设置参数个数,demo3.py程序中加入了父母名字,肯定要输入两个,除非你孙悟空,所以设置nargs=2就可以输入两个参数。如下图黄色框内容,父母分别叫Wang和Liu。当然此处也可以设置nargs=+(一个或多个参数)。

 


      还有一个action参数,个人感觉不常用。就介绍这么多吧,希望大家指正。 

 

标签:argparse,args,--,py,argument,用法,参数,赋值
来源: https://blog.csdn.net/jay_cheliu_/article/details/120696575