一文看懂Python第三方库(二)----- argparse模块

一、argparse简介

argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行。此库也是深度学习必学的众多库之一,包括上一篇的tqdm进度条库,以及之后介绍的Numpy、Pandas库等等,废话不多说,所以让我们静下心来一块学习吧!

二、argparse学习

  • 首先,我们需要导入,非常简单
import argparse
  • 它的使用方法也比较固定,无非就是以下3步:
    • (1).创建ArgumentParser()对象
    • (2).调用 add_argument() 方法添加参数
    • (3).使用 parse_args() 方法解析添加的参数
  • 我们先来一个简单的示例以便理解
‘’‘这个例子非常简单:在命令行中输入3个整型数,然后对它们进行求和操作’‘’

import argparse
if __name__ == '__main__':
	# 创建ArgmentParser()对象
    parser = argparse.ArgumentParser(description='add')
    # 添加参数
    parser.add_argument('--first', type = int, default = '1', help = 'first num')
    parser.add_argument('--second', type = int, default = '2',help = 'second num')
    parser.add_argument('--third', type =int, default = '3', help = 'third num')
    # 解析参数
    args = parser.parse_args()
    args_vars = vars(args)
    first = args_vars.get('first')
    second = args_vars.get('second')
    third= args_vars.get('third')
    print(int(first) + int(second) + int(third))
  • 运行
    在这里插入图片描述

三、add_argument()方法详解

  • 方法解析
add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
  • 参数
- name or flags : 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。


- action : 当参数在命令行中出现时使用的动作基本类型。
	- store_const:当从命令出现了这个参数,则保存const中的常量。
    - store_true、store_false:与上面store_const类似,只是保存的是真假值
    
- nargs : 命令行参数应当消耗的数目。


- const : 被一些 action 和 nargs 选择所需求的常数。


- default : 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。


- type : 命令行参数应当被转换成的类型。


- choices : 可用的参数的容器。


- required : 此命令行选项是否可省略 (仅选项可用)。


- help : 一个此选项作用的简单描述。


- metavar : 在使用方法消息中使用的参数值示例。


- dest : 被添加到 parse_args() 所返回对象上的属性名。
  • 参数有很多,这里我们只关注常用的几个。
- name or flags : 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
- default : 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。
	- 所有选项和一些位置参数可能在命令行中被忽略。
- action : 指示如何处理命令行参数
- type : 命令行参数应当被转换成的类型。
	- 默认情况下,解析器会将命令行参数当作简单字符串读入。
- choices : 可用的参数的容器。
	- 某些命令行参数应当从一组受限值中选择。
- help : 一个此选项作用的简单描述。
  • 示例
import argparse
# 创建ArgumentParser对象
parser = argparse.ArgumentParser(description='add')
# 添加参数
parser.add_argument('--patch_size', type=int, default=100, help='patch size (default: 48)')
parser.add_argument('--dataset', default='DRIVE', choices=['DRIVE', 'CHASE', 'STARE', 'HRF'])
# 解析参数
args = parser.parse_args()
# 获得参数中的patch_size、dataset的值
print(args.patch_size,args.dataset)
# 打印出所有的参数
print(args)
print(type(args))
  • 运行及运行结果
    在这里插入图片描述
  • 可以发现,返回的是一个Namespace对象,我们需要继续将其转换为Python的字典类型,因为这样更容易保存!
import argparse
# 创建ArgumentParser对象
parser = argparse.ArgumentParser(description='add')
# 添加参数
parser.add_argument('--patch_size', type=int, default=100, help='patch size (default: 48)')
parser.add_argument('--dataset', default='DRIVE', choices=['DRIVE', 'CHASE', 'STARE', 'HRF'])
# 解析参数
args = parser.parse_args()
args_vars = vars(args)
print(args_vars,type(args_vars))
  • 运行及运行结果
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dongjinkun/article/details/114694045