Python是一门非常好用的脚本语言,自然使用它来开发命令行程序也比较方便。而且Python的标准库中有一个名为argparse的库,可以非常方便的让我们把命令行参数转换成所需的数据格式。下面就让我们来看看如何使用argparse标准库吧。
如果想详细了解argparse的话,可以查看Python官方文档,目前已经出了中文版文档,极大的方便了我们中国开发者,虽然有些地方没有完整翻译,但是已经完全够用了。
初见argparse
首先来看看argparse的基本用法,下面是最简单的一个例子。可以看到argparse标准库其实用起来很简单,分成三个步骤:
- 创建
ArgumentParser
对象 - 使用
add_argument
方法添加参数 - 使用
parse_args
方法接受并解析对象
下面我们就依次来看看这些步骤吧。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-from', type=str)
parser.add_argument('-to', type=str, default='everyone')
args = parser.parse_args('-from yitian'.split(' '))
print(args)
# 运行结果
# Namespace(from='yitian', to='everyone')
ArgumentParser
ArgumentParser
是最重要的一个类,我们要使用argparse标准库就必然需要创建这个类的实例。如果有需要的话,可以通过在构造函数中设置各种参数的方式来修改ArgumentParser
类的行为。由于参数项比较多,所以官方文档建议我们使用关键字参数的方式来添加参数。
- prog - 程序的名称(默认:
sys.argv[0]
),默认是Python程序的文件名 - usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
- description - 在参数帮助文档之前显示的文本(默认值:无)
- epilog - 在参数帮助文档之后显示的文本(默认值:无)
- parents - 一个
ArgumentParser
对象的列表,它们的参数也应包含在内。假如多个parser有一些可以共享的参数,可以通过设置子parser的方式来共享 - formatter_class - 用于自定义帮助文档输出格式的类
- prefix_chars - 可选参数的前缀字符集合(默认值:’-’)
- fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:
None
) - argument_default - 参数的全局默认值(默认值:
None
),假如需要给所有参数指定一个相通的默认值,可以修改这个,如果希望全局禁用默认值,可以使用argparse.SUPRESS
- conflict_handler - 解决冲突选项的策略(通常是不必要的)
- add_help - 为解析器添加一个
-h/--help
选项(默认值:True
) - allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:
True
)
add_argument方法
有了Parser实例,就可以调用它的add_argument
方法来添加程序可以接受的参数了。这个参数比较复杂,功能也十分强大。
- name or flags - 一个命名或者一个选项字符串的列表&