提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
在机器学习中,通常用的argparse.ArgumentParser()函数,此模块主要用于解析命令行参数和选项,本文主要讲解其相关的用法。
一、argparse
argparse用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数。在训练过程中,方便快速在终端输入训练的参数和相关的选项。二、argparse使用步骤
2.1 使用步骤
常用的方法基本按照以下步骤进行:导入模块、创建parse对象、添加参数和选项,解析参数和选项:
(1)import argparse
(2)parser = argparse.ArgumentParser()
(3)parser.add_argument()
(4)parser.parse_args()
2.2 参数讲解
(1)argparse.ArgumentParser()
prog=None - The name of the program (default: sys.argv[0]) 程序文件名
usage=None - The string describing the program usage (default: generated from arguments added to parser) 程序使用说明
description=None - help时显示的开始文字 Text to display before the argument help (default: none)
epilog=None, - help时显示的结尾文字
parents=[], -若与其他参数的一些内容一样,可以继承
formatter_class=argparse.HelpFormatter, - 自定义帮助信息的格式
prefix_chars='-', - 命令的前缀,默认是‘-’
fromfile_prefix_chars=None, - 命令行参数从文件中读取
argument_default=None, - 设置一个全局的选项缺省值,一般每个选项单独设置
conflict_handler='error', - 定义两个add_argument中添加的选项名字发生冲突时怎么处理,默认处理是抛出异常
add_help=True - 是否增加-h/--help选项,默认是True)
(2)parser.add_argument()
name or flags... - 必选参数名或者可选参数标识符,它必须作为add_argument()方法的第一个参数。
dest - 这个参数相当于把位置参数或者选项参数关联到一个特定的名字
action - 表示值赋予键的方式,这里用到的是bool类型,action意思是当读取的参数中出现指定参数的时候的行为
help - 参数的说明信息
required - 说明参数是否必须进行输入,只支持可选参数。
type - 指定命令行参数数据类型
choices - 说明命令行参数的取值范围,它的值一般是一个列表。choices列表中元素的类型应该与type批定的类型相兼容
nargs - 指定这个参数后面的value有多少个,默认为1,如果设定为数字,比如2,表示接受2个value;如果设定为‘?’那么就只接受1个或者0个value,当0个value是默认值是default的value;如果设定为‘*’,后面可接多个value
default - 必选参数和可选的参数的默认值。
(3)parser.parse_args(args=None, namespace=None)
args - List of strings to parse. The default is taken from sys.argv. 字符串列表,默认来自sys.argv
namespace - An object to take the attributes. The default is a new empty Namespace object. 对象名,默认是一个空Namespace对象。
2.3 例子讲解
代码如下(示例):
import argparse
def parse_arge():
parse=argparse.ArgumentParser(description='add parameter')
parse.add_argument('--addr',default='sipingroad',help='the path of addr')
parse.add_argument('--gpu',default=0)
args=parse.parse_args()
return args
if __name__=='__main__':
args=parse_arge()
print(args.addr)
print(args.gpu)