argparse模块官方文档:
argparse是一个Python模块:命令行选项、参数和子命令解析器
argparse模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数。然后argparser将弄清
如何从sys.argv解析出那些参数。argparse模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
使用流程
1. 创建解析器
parser = argparse.ArgumentParser(description='Process some intergers.')
使用argparser的第一步是创建一个ArgumentParser对象,ArgumentParser对象包含将命令行解析成Python数据类型所需的全部信息。
2. 添加参数
(1). parser.add_argument('integers', metavar='N', type=int, nargs='+', help = 'an integer for the accumulator')
给一个ArgumentParser添加程序阐述信息是通过调用add_arguement()方法完成的。
3. 解析参数
(1). >>>parser.parse_args(['--sum', '7', '-1', '42' ])
2 Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])
ArgumentParser通过parse_args()方法解析参数
使用案例
#-*- coding: UTF-8 -*-
import argparse #步骤一,导入模块
def parse_args():
"""
:return:进行参数的解析
"""
parser = argparse.ArgumentParser(description="you should add those parameter") # 这些参数都有默认值,当调用parser.print_help()或者运行程序时由于参数不正确(此时python解释器其实也是调用了pring_help()方法)时,会打印这些描述信息,一般只需要传递description参数。
parser.add_argument('--addresses',default="sipingroad", help = "The path of address")
parser.add_argument('--gpu', default=0) # 设置参数"gpu"的默认值为0
args = parser.parse_args() # 步骤三,进行参数解析
# parser.print_help() 可以打印出帮助信息
return args
if __name__ == '__main__':
args = parse_args()
print(args.addresses) # 获取参数args.addresses的信息
细节描述
1.ArgumentParser对象
prog - 程序的名称(默认: sys.argv[0],prog猜测是programma的缩写)
usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
description - 在参数帮助文档之后显示的文本 (默认值:无)
2.add_argument()方法
name or flags - 一个命名或者一个选项字符串的列表
action - 表示该选项要执行的操作
default - 当参数未在命令行中出现时使用的值
dest - 用来指定参数的位置
type - 为参数类型,例如int
require-用于确保组中的参数至少有一个或者只有一个(required=True)
choices - 用来选择输入参数的范围。例如choice = [1, 5, 10], 表示输入参数只能为1,5 或10
help - 用来描述这个选项的作用
argpparse高阶用法
1.ArgumentParser支持参数分组
2.argparse支持子命令
支持子命令,比如pip就有install/uninstall/freeze/list/show等子命令,这些子命令又接受不同的参数,使用ArgumentParser.add_subparsers()就可以实现类似的功能。
3.出现非法参数时,输出提示信息并退出应用程序
除了参数处理之外,当出现非法参数时,用户还需要做一些处理,处理完成后,一般是输出提示信息并退出应用程序。ArgumentParser提供了两个方法函数,分别是exit(status=0, message=None)和error(message),可以省了import sys再调用sys.exit()的步骤。
4.支持文件类型
除了支持常规的int/float等基本数值类型外,argparse还支持文件类型,只要参数合法,程序就能够使用相应的文件描述符。