第14章 应用构建模块
14.1 argparse:命令行选项和参数解析
argparse模块包含一些工具来构建啊命令行参数和选项处理器。这是在Python2.7中增加的,以取代optparse。argparse的实现支持一些新特性,其中有些特性可能无法轻松地增加到optparse,有些特性则要求API有变化,而这些改变不是向后兼容的。所以,干脆在库中增加了一个新的模块。现在optparse已经废弃。
14.1.1 建立解析器
使用argparse的第一步是创建一个解析器对象,并告诉它需要什么参数。程序运行时可以使用这个解析器处理命令行参数。解析器类(ArgumentParser)的构造函数可以取多个参数,来建立程序帮助文本中使用的描述以及其他全局行为或设置。
import argparse
parser = argparse.ArgumentParser(
description='This is a PyMOTW sample program',
)
14.1.2 定义参数
argparse是一个完整的参数处理库。参数可以触发不同的动作,由add_argument()的action参数指定。支持的动作包括存储参数(单独存储,或者作为列表的一部分存储),遇到这个参数时存储一个常量值(包括对Boolean分支的true/false值的特殊处理),统计遇到一个参数的次数,以及调用一个回调来使用定制处理指令。
默认动作是存储参数值。如果提供了一个类型,那么存储值之前要将值转换为该类型。如果提供了dest参数,那么解析命令行参数时要用这个名来保存值。
14.1.3 解析命令行
定义了所有参数之后,可以将一个参数串序列传递到parse_args()以解析命令行。默认地,参数由sys.argv[1:]得到,不过也可以使用任意的串列表。选项使用GNU/POSIX语法处理,所以选项和参数值可以混合出现在序列中。parse_args()的返回值是一个包含命令参数的Namespace。这个对象会保存参数值(作为属性),所以如果参数的dest被设置为"myoption",那么便可以用args.myoption访问这个值。