argparse包的功能
官方文档
argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块。可以便于管理、读取命令行参数,argparse.ArgumentParser的实例化对象是一个参数规范的解析器,通过 **ArgumentParser.add_argument()**方法将各参数的规范添加到解析器中,**ArgumentParser.parse_args()**方法运行解析器并将提取的数据放在argparse中。然后 argparse 将会从 sys.argv 解析出这些参数。sys.argv可看作是一个从程序外部获取参数的桥梁,是一个参数列表,第一个元素是程序本身,接着依次是外部传入的参数。
包的使用
1、argparse.ArgumentParser()
第一步使用argparse.ArgumentParser()方法创建一个解析器。
parser = argparse.ArgumentParser(
prog = 'ProgramName',
description = 'What the program does',
epilog = 'Text at the bottom of help')
常用参数:
prog - 程序的名称 (默认值: os.path.basename(sys.argv[0]));
description - Text to display before the argument help (by default, no text)。大多数对 ArgumentParser 构造方法的调用都会使用 description= 关键字参数。 这个参数简要描述这个程序做什么以及怎么做。 在帮助消息中,这个描述会显示在命令行用法字符串和各种参数的帮助消息之间;
epilog - Text to display after the argument help (by default, no text)一些程序喜欢在 description 参数后显示额外的对程序的描述。
2、ArgumentParser.add_argument()
第二步使用ArgumentParser.add_argument()方法添加参数,参数信息在 parse_args() 调用时被存储和使用。
parser = argparse.ArgumentParser()
parser.add_argument('--test_image', default='result/test/cropped/065_im.png',required=False, help='path to dataset')
parser.add_argument('--workers', type=int, help='number of data loading workers', default=4)
parser.add_argument('--cuda', action='store_true', help='enables cuda')
常用参数:
- name or flags:一个命名或者一个选项字符串的列表,如“test_image”,则格式为“-test_image”或者“–test_image”,这种前面没有 “-” 的参数被称为名称(name),而 -test_image, --test_image 这种前面有 “-” 的参数被称为旗标(flags)
- default:当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值
- type:命令行参数应当被转换成的类型
- action: 当参数在命令行中出现时使用的动作基本类型,默认动作是‘store’,存储参数的值;
- help:一个此选项作用的简单描述
3、parse_args()
第三步使用parse_args()方法解析参数
将参数字符串转换为对象并将其设为命名空间的属性。 返回带有成员的命名空间。
parser = argparse.ArgumentParser()
parser.add_argument('--dataset', default='streetview', help='cifar10 | lsun | imagenet | folder | lfw ')
parser.add_argument('--cuda', action='store_true', help='enables cuda')
parser.add_argument('--nef',type=int,default=64,help='of encoder filters in first conv layer')
opt = parser.parse_args()
print(opt)
输出结果:
Namespace(dataset='streetview', cuda=False, nef=64)