Python argparse,

  Python argparse,

  本文主要介绍Python对argparse参数模块命令行参数的详细讲解。文章紧扣主题,具有一定的参考价值。有需要的可以参考下面这篇文章详细讲解。

  00-1010前言示例1:极简参数对象示例2:整数求和示例3:文件是否被篡改自定义类型选择选项定义必需的必需参数子命令

  

目录

 

  帮助(argparse)查看描述文档“arg parse-命令行解析库”。我们可以知道它是一个命令行解析库,是一个参数解析相关的模块。

  

前言

 

  让我们从一个简单的代码开始,快速理解这个参数是什么。

  像t.py.一样保存文件

  导入argparse

  parser=arg parse . argument parser(description=最简单的测试)

  parser.add_argument( - test ,type=str,default=China )

  args=parser.parse_args()

  打印(参数测试)

  然后我们在命令行上运行这个文件。

  c : Users Tonypython t . py-test“我爱中国”

  我爱中国

  我们来分析一下这段代码。首先,我们创建一个参数解析对象,并将其分配给解析器。然后,我们使用add_argument方法在解析器对象中添加参数和各种选项,其中- test是参数。该参数的名称是根据其功能定制的。type=str指定输入值类型为字符串,default=China 为默认值。也就是说,如果不指定参数,将显示中国的默认值。

  对于parser.parse_args()解析参数后的调用,需要说明的是,如果没有指定dest,则是直接调用删除破折号名称。如果指定了它,如dest=showstr ,则调用args.showstr属性。如果仍然调用test,将会报告一个错误,并且需要修改它以打印(args.showstr)。

  attribute error :“Namespace”对象没有属性“test”

  

示例一:最简参数对象

 

  若没有指定参数就取这些整数当中的最大值:

  #一页

  导入argparse

  #创建一个ArgumentParser对象,用于分析

  parser=arg parse . argument parser(description=处理某些整数)

  #向对象添加参数

  Parser.add _ argument (integers ,metavar= n ,type=int,nargs= ,help= accumulated integer )

  Parser.add _ argument (-sum ,dest= accumulate ,action= store _ const ,const=sum,default=max,help= sum(默认为最大值))

  #解析参数

  args=parser.parse_args()

  print(args . accumulate(args . integers))

  当调用parse_args()方法时,将返回两个参数属性(integers和accumulate)。integers属性是一个或多个整数,accumulate属性是sum()求和函数。如果没有- sum参数,就是默认的max()最大值函数,default=max。

  另外,n可以指定数字,nargs= ,表示一个或多个。如果你熟悉正则表达式,那就很简单了。它是一个通配符,有“?”表示1, * 表示0或更多。

  print(parser.parse_args([ - sum , 1 , 33 , 5 , 6]))

  命名空间(accumulate=内置函数sum

  >, integers=[1, 33, 5, 6])

  

  我们可以看到出现一个命名空间,其中accumulate属性是一个sum方法, integers属性是一系列的整数。

  可以查看使用帮助说明:

  

C:UsersTony>python p.py -h

 

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

  处理一些整数

  positional arguments:
N 累加的整数

  optional arguments:
-h, --help show this help message and exit
--sum 求和(默认求最大值)

  

 

  带参与不带参的操作:

  

C:UsersTony>python p.py 1 33 5 6
33

 

  C:UsersTony>python p.py -sum 1 33 5 6

C:UsersTony>python p.py 1 33 5 6 --sum
45

  

 

  当然如果是没有按照参数设定的情况,会报错:

  

C:UsersTony>python p.py
#需要输入值N
usage: p.py [-h] [--sum] N [N ...]
p.py: error: the following arguments are required: N

 

  C:UsersTony>python p.py 1 33 5.1 6
#需要输入整数,浮点数就报错
usage: p.py [-h] [--sum] N [N ...]
p.py: error: argument N: invalid int value: '5.1'

  

 

  可以看出这个参数对象除了可以在命令行界面方便使用之外,还可以对其做一些严格的限定。比如类型的限定,示例二的类型指定为int,那就不能是浮点数,如果可以是浮点数就指定成type=float

  

 

  

示例三:文件是否被篡改

 

  我们来看下,test目录下面(放了三个文本文件),生成每个文件的md5值,如果和官网提供的md5一样就说明内容没有被篡改,执行完之后将显示每个文件生成的MD5值以及生成一个名为"目录后缀.txt"文档(内容一样)

  

#m.py

 

  命令行执行:

  

C:UsersTony>python m.py --file_dir "C:/Users/Tony/test"
1.txt : 81dc9bdb52d04dc20036dbd8313ed055
2.txt : d84b0391f5ce6b011e4086ed73d9dd9b
3.txt : 2b3b15ac34d69fa01e851d483e61f029

 

  

 

  这段代码可以看出,只需指定一个文件目录的参数即可求出目录下面所有文件的md5值。当然也可以跟示例二那样做一些说明:parser.add_argument('--file_dir', type=str,help='指定文件所在目录') 加一个help参数的说明文字。

  

C:UsersTony>python m.py -h
usage: m.py [-h] [--file_dir FILE_DIR]

 

  optional arguments:
-h, --help show this help message and exit
--file_dir FILE_DIR 指定文件所在目录

  

 

  

parser = argparse.ArgumentParser(对文件批量生成MD5值)

 

  

 

  

自定义类型

 

  除了基本类型之外,还可以自定义类型,如下定义一个类型只能是完全平方数的值

  

#d.py

 

  命令行运行:

  

C:UsersTony>python d.py 3
usage: d.py [-h] hi
d.py: error: argument hi: '3' 不是一个完全平方数

 

  

 

  

C:UsersTony>python d.py -h
usage: d.py [-h] hi

 

  自定义类型:

  positional arguments:
hi 只能是完全平方数

  optional arguments:
-h, --help show this help message and exit

  

 

  可以看到hi参数是一个positional arguments(位置参数),也就是说是必须的,不像前面有短横线的optional arguments(可选参数)

  

 

  

choices选项限定

 

  除了上述类型限定和可以自定义类型之外,还可以限定在一些自定义的范围内

  

#c.py

 

  

命令行执行:
C:UsersTony>python c.py 10
usage: c.py [-h] {1,2,3,4,5,6,7,8}
c.py: error: argument sel: invalid choice: 10 (choose from 1, 2, 3, 4, 5, 6, 7, 8)

 

  

 

  

 

  

required必选参数

 

  我们也可以对可选参数指定为必选,不指定的情况:

  

parser=argparse.ArgumentParser(description=自定义选项)

 

  这个例子,我们知道sel参数是可选的,这样不会出错,结果:Namespace(sel=None)
如果加一个required=True

  

parser.add_argument(--sel,required=True,type=int,choices=range(1,9),help=请输入[1-9)范围的整数)

 

  

 

  

子命令

 

  

主要是set_defaults方法的用途,在多个解析器的时候显得很重要。

 

  命令行执行:

  

C:UsersTony>python s.py add --x 11 --y 2 --z 9
x+y+z= 22

 

  

 

  到此这篇关于Python详解argparse参数模块之命令行参数的文章就介绍到这了,更多相关Python argparse 内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: