MENU

Argparse模块

September 9, 2023 • Read: 70 • code阅读设置

argparse模块

这里使用了argparse模块,argparse是python用于解析命令行参数和选项的标准模块。简单来说,就是能够使我们在终端输入运行命令时同时输入训练的参数和选项。

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

  1. import argparse
  2. parser = argparse.ArgumentParser()
  3. parser.add_argument()
  4. parser.parse_args()

上面四个步骤解释如下:

  • 首先导入该模块;
  • 然后创建一个解析对象;
  • 然后向该对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项;
  • 最后调用parse_args()方法进行解析;解析成功之后即可使用。

例子

# 导入库
import argparse
 
# 1. 定义命令行解析器对象
parser = argparse.ArgumentParser(description='Demo of argparse')
 
# 2. 添加命令行参数
parser.add_argument('--epochs', type=int, default=30)
parser.add_argument('--batch', type=int, default=4)
 
# 3. 从命令行中结构化解析参数
args = parser.parse_args()
print(args)
epochs = args.epochs
batch = args.batch
print('show {}  {}'.format(epochs, batch))

我们在执行这段程序时的命令为python fun_test.py --epochs 30 --batch 4,表示指定参数epochs为30,batch为4。

细节说明

  • 在添加的命令行参数中,有的参数会指定action选项,如parser.add_argument("--no_cuda", action='store_true'),它的含义是在执行程序输入了该参数名,则该参数值为True,否则该参数值为False,如python fun_test.py --no_cuda,表示指定no_cuda的参数值为True,而python fun_test.py,表示指定no_cuda的参数值为False
  • 在添加的命令行参数中,有的参数会指定required=True选项,表示在执行该段程序时该参数必须被指定。
  • 用命令行指定参数值时,格式为python file_name.py --arg_name arg_value,表示arg_name对应的参数值设定为arg_value