Python之argparse模块

argparse模块

1.使用步骤

我们常常可以把argparse的使用简化成下面四个步骤:

步骤1(导入该模块):import argparse   
步骤2(创建一个解析对象):parser = argparse.ArgumentParser()
步骤3(添加你想要的命令行参数和选项):parser.add_argument()
步骤4(进行解析):parser.parse_args()

参考模板:
import argparse   

def parse_args():             
    parser = argparse.ArgumentParser(description="you should add those parameter")   
    parser.add_argument('-a', action="store_true", default=False)
	parser.add_argument('-b', action="store")
	parser.add_argument('-c', action="store", type=int)                   
    args = parser.parse_args() # 在命令行中传入参数
    # args = parser.parse_args(['-a', '-b', 'chengang', '-c', '3']) # 在程序中传入参数
    return args

if __name__ == '__main__':
    args = parse_args()
    print(args.addresses)          

2.参数说明

argparse是一个全面的参数处理库。参数可以触发不同的动作,动作由add_argument()方法的action参数指定,内置6种动作可以在解析到一个参数时进行触发:

(1)store保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。

(2)store_const 保存一个被定义为参数规格一部分的值,而不是一个来自参数解析而来的值。这通常用于实现非布尔值的命令行标记。

(3)store_ture/store_false 保存相应的布尔值。这两个动作被用于实现布尔开关。

(4)append 将值保存到一个列表中。若参数重复出现,则保存多个值。

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

(6)version 打印关于程序的版本信息,然后退出

关于store_ture与store_false的理解:
如上面程序中,args.a的默认False。
使用语句:args = parser.parse_args(['-a', '-b', 'cg', '-c', '3'])
输出args.a为True,因为调用了'-a'。

使用语句:args = parser.parse_args(['-b', 'cg', '-c', '3'])
输出args.a为默认值False,因为没有调用'-a'

add_argument参数说明:

(1)name:选项字符串的名字。单字母用-,多字母使用--,例如-p,-v,--version,--pass等。
(2)action:基本动作类型。
(3)nargs:对应参数应该获取的变量个数,大于1个变量用list来表示。一般取值有如下几个:
	N  数值int型,即nargs=3,nargs=10等
	?  表示0个或者1个参数,如nargs = '?'
	*  表示0个或者多个参数,如nargs = '*'
	+  表示1个或者多个参数,如nargs = '+'
(4)const:某些action和nargs选项要求的常数值。如果有这个参数,则使用脚本时不需要追加变量。
(5)default:如果命令行中没有出现该参数时该参数的默认值。
(6)type:命令行参数应该被转换成的类型。支持以下类型:str, int, float, complex, file。如果没	有此参数,默认为str类型。
(7)choices:参数可允许的值的一个容器(列表)。
(8)required:该命令行选项是否可以省略(只针对可选参数)。
(9)help:参数的简短描述。
(10)metavar:参数在帮助信息中的名字,即类似起一个别名。
(11)dest:给parse_args()返回的对象添加的属性名称,即给namespace里面的参数起的别名,作用同	          metavar(只有非位置参数才可以用dest)

例子:

import argparse

p = argparse.ArgumentParser()
p.add_argument('-p', help='Optional parameters', metavar='TP', dest='abcd')
args = p.parse_args()
print(args)

输出:
>> python arg.py -h
usage: temp.py [-h] [-p TP]
optional arguments:
  -h, --help  show this help message and exit
  -p TP       Optional parameters

>> python temp.py -p 5
Namespace(abcd='5')

从上面的例子可以看出:
(1)metavar='TP'在帮助信息中为'-p'添加了别名'TP',如上为"-p TP"。
(2)dest='abcd'使得参数名p被abcd代替,本来应该为Namespace(p='5'),现在Namespace(abcd='5')

参考文献

[1] python学习之argparse模块

[2] python之定义参数模块argparse(一)基本使用

[3] argparse - 命令行选项与参数解析(译)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章