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')。