1.前言
最近尝试学习使用argparse进行参数管理,顺便改善一下我那丝毫都不专业的、简单粗暴的代码习惯。
argparse模块可以让人轻松地编写用户友好地命令行接口,并且还能够自动生成帮助与使用手册,并在用户给程序传入无效参数时报出错误信息。
2.使用步骤
首先我们需要先实例化一个ArgumentParser对象:
import argparse parser = argparse.ArgumentParser(description = 'A_simple_demo')
description就是对整个程序的简单描述,主要说明程序的功能与作用。
然后我们就可以使用add_argument函数进行参数的添加,参数的添加有以下几种较为典型的例子:
1.
parser.add_argument('echo', help = 'echo the thing you use here') args = parser.parse_args() print(args.echo)
这块代码实现的功能是重复命令行中输入的内容,很简单,很鸡肋
2.但是,我们如果直接向parser传递变量,那么它默认接收的是str类型(即使我们传输的是一个数字)
因此,我们还可以对add_argument中的参数类型进行指定:
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", help="display a square of a given number", type=int) args = parser.parse_args() print(args.square**2) #下面是这段代码运行的结果 $ python3 prog.py 4 16 $ python3 prog.py four usage: prog.py [-h] square prog.py: error: argument square: invalid int value: 'four'
这样它就能将输入的数字存储为int类型,而至于不能够存储为int的输入,它就会报错
3.当然我们也可以用default为变量设置一个默认值:
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", help="display a square of a given number", type=int, default=3) args = parser.parse_args() print(args.square**2) #以下是该代码运行的结果 $ python3 prog.py 9
一般来说,在我们向parser中添加变量时,有了变量名,有了help,有了type,有了default,就已经是个完整的添加变量的流程了。
下面再补充几个add-argument的变量。
4.首先是action='store_true',一旦我们指定了一个变量的action=‘store_true',那么我们只要在命令行中调用这个变量,它就会被定义为True(不需要指定变量的值),例如:
import argparse parser = argparse.ArgumentParser(description = 'A_simple_demo') parser.add_argument('--sparse', action='store_true', default=False, help = 'GAT with sparse version or not.') #这里将sparse的值默认地定义为False,但如果我们在命令行调用--sparse,那么它就会被置为True print(args.sparse) #下面是程序运行的结果 $ python parse_test.py --sparse True $ python parse_test.py False
5.我们还可以通过在命令行中输入--help,来获取整个parser的帮助文本,以及各个变量的帮助文本
import argparse parser = argparse.ArgumentParser(description = 'A_simple_demo') parser.add_argument('--sparse', action='store_true', default=False, help = 'GAT with sparse version or not.') parser.add_argument('--seed', type = int, default = 72, help = 'Random seeed.') parser.add_argument('--epochs', type = int, default = 10000, help = 'Number of epoches to train.') args = parser.parse_args() #输出结果 $ python parse_test.py --help usage: parse_test.py [-h] [--sparse] [--seed SEED] [--epochs EPOCHS] A_simple_demo optional arguments: -h, --help show this help message and exit --sparse GAT with sparse version or not. --seed SEED Random seeed. --epochs EPOCHS Number of epoches to train.
通过--help,我们就可以查看整个模型的功能以及每个变量的作用
6.如果想给变量赋一个列表作为它的值,那么可以如下操作:
import argparse parser = argparse.ArgumentParser(description = 'A_simple_demo') parser.add_argument('--list', nargs = '+', default = ['信贷业务', '财务管理'], help = 'A cute list.') args = parser.parse_args() print(args.list) #代码运行结果如下 $ python parse_test.py --list 请 PSG.LGD战队 挑选 英雄 ['请', 'PSG.LGD战队', '挑选', '英雄']
也就是说,如果要将一系列值整合作为列表传入,可以设置nargs='+',如果希望指定不同类型的值,可以设置type=int(或者其它形式)