目录
主要有三个步骤:
- 创建 ArgumentParser() 对象
- 调用 add_argument() 方法添加参数
- 使用 parse_args() 解析添加的参数
1、 创建 ArgumentParser() 对象
from argparse import ArgumentParser
parser = ArgumentParser(description='Process some integers.')
# 全部参数
# class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True)
2、调用 add_argument() 方法添加参数
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
# 全部参数
# ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
3、调用 parse_args() 方法解析参数
args = parser.parse_args()
4、附录:
1) ArgumentParser()参数说明
class argparse.ArgumentParser(
prog=None, # 设定程序名称 (defaul: sys.argv[0])
usage=None, # 替换默认的Usage信息
description=None, # 程序简要信息说明(参数说明前)
epilog=None, # 附加信息说明(参数说明后)
parents=[], # 继承父解析器(parser)
formatter_class=argparse.HelpFormatter, # 自定义帮忙信息显示格式(4种)
prefix_chars='-', # 参数前缀符号(默认为-,如:-h/--help)
fromfile_prefix_chars=None, # 从文件中引用参数(与在命令行直接写作用一致,解决参数过多的情况)
argument_default=None, # 可设置argparse.SUPPRESS阻止默认参数默认值
conflict_handler='error', # 参数冲突处理
add_help=True, # 帮助信息中默认添加"-h, --help"描述
allow_abbrev=True # 允许参数缩写
)
2、add_argument()参数说明
ArgumentParser.add_argument(
name or flags... # 选项的名称或列表,例如:foo/-f/--foo
[, action] # 采取的基本操作
store(默认) 存储参数值
store_const 使用该字符串选项时,取用const值
store_true 使用该字符串选项时,参数值置为True
store_false 使用该字符串选项时,参数值置为False
append 同一个命令行中多次使用该字符串选项时,以追加的方式将值添加到list中
append_const 将多个字符串选项的const值合并到一个list
count 统计选项出现的次数 (如:"-vvv",则最终值为3)
help parser默认会添加一个help action。(一般不用理会)
version 打印版本信息
也可以自定义action类
[, nargs] # 该参数值要求的数量
数值 指明参数个数
? 提供了参数则取参数值;
无参数但声明了选项字符串则取const值;
无参数也未声明选择字符串则取default值
* 所有参数存入list
+ 与*类似,但参数个数不能为空
argparse.REMAINDER 原封不动的记录参数到list中,通常用于将这些参数传递到其它的命令行工具。
[, const] # action/nargs部分要求的常值
1、当action="store_const"或者"append_const"时需要设置
2、当选项为(-f/--foo),nargs='?',同时未提供具体参数时,取用该值。
[, default] # 参数默认值
[, type] # 参数类型(内建参数或者函数,也可是自定义函数)
[, choices] # 允许的参数值(白名单),tuple/range 例如choice = [1, 5, 10], 表示输入参数只能为1,5 或10,但是直接调用时默认不影响,即默认值可以不是可选参数
[, required] # 选项是否必须,设置为True表示选项必填。且必须在交互模式(cmd)下填入才可以运行
[, help] # 参数说明,可以用其它类似 %(prog)s 格式调用prog值;可设置argparse.SUPPRESS使该选项在帮助信息中不可见。
[, metavar] # 定义参数在Usage信息中的名称
[, dest] # 解析后的属性名称
)
3)使用示范
直接运行:
from argparse import ArgumentParser
def get_args():
parser = ArgumentParser(description="Implementation of SSD")
parser.add_argument("--data-path", type=str, default="coco",
help="the root folder of dataset")
parser.add_argument("--save-folder", type=str, default="trained_models",
help="path to folder containing model checkpoint file")
parser.add_argument("--log-path", type=str,default="47")
args = parser.parse_args()
return args
args = get_args()
print(args)
print(args.log_path)
输出结果;
D:\Anaconda3\python.exe D:/0_me_python/1.py
Namespace(data_path='coco', log_path='47', save_folder='trained_models')
47
Process finished with exit code 0
在 Cmd 中运行: