python功能模块详述_python optparse模块源码解析

17270ce95af85a4a2d33846cd5831d99.png

功能介绍

python的optparse模块用来解析命令行参数。支持多种参数数据类型,如字符串,布尔,常数等;能自动生成帮助与usage等信息。

环境介绍

我们在如下环境来分析optparse模块源码:

系统:CentOS-7

Python版本:2.7.5

场景描述

使用官方使用的例子来进行分析:

from optparse import OptionParser

parser = OptionParser()

parser.add_option("-f", "--file", dest="filename",

help="write report to FILE", metavar="FILE")

parser.add_option("-q", "--quiet",

action="store_false", dest="verbose", default=True,

help="don't print status messages to stdout")

(options, args) = parser.parse_args()

总体分析

optparse模块总体设计比较清晰,首先实例化OptionParser,parser = OptionParser(),实例化中主要是初始化相关选项的实例属性,如短选项self._short_opt,长选项self._long_opt;接着通过parser实例的add_option方法来注册将要获取的命令行选项,主要涉及选项名称,默认值,参数数据类型,方便下一步的解析操作对命令行参数进行必要的检测;最后是调用parser的parse_args方法通过上一步add_option注册的选项来检测命令行参数是否合法,并且返回选项名及其值的字典,这样就可以通过选项名来获取值。

详细分析

函数调用流程图

8c21db0c892ece413fd3427a8ecb764a.png

核心类功能介绍

类关系图

411108511daeee6e357eb89a5fee4e1b.png

OptionContainer类

作用

存储注册选项的数据,如短选项,长选项,关键词(定义选项数据类型等)。

主要属性:

option_list: 存储所有选项定义数据;

_short_opt: 存储短选项定义数据;

_long_opt: 存储长选项定义数据;

defaults: 各选项默认值。

主要方法:

add_option(self, *args, **kwargs): 注册选项,调用Option类存储选项相关数据,并存储在OptionContainer的相关属性中。

Option类

作用

解析并记录选项所有数据,如长选项,短选项,数据类型,默认值等。

主要属性

_short_opts: 短选项,如-f;

_long_opts: 长选项,如–file;

action: 对选项值作的操作,如store_true,存储为布尔true;

type: 数据类型;

dest: 设置选项值存储到的变量;

default: 设置选项默认值。

主要方法

主要是_check_*对关键词检查的方法,如_check_type是检查type的值是否合法,并返回正确的类型。

OptionParser类

作用

解析命令行参数,此类继承了OptionContainer类,所以可以通过OptionContainer中定义的选项数据来对传入的命令行参数作合法性检查,并返回正确的数据。解析完成之后返回选项名与值的字典。

主要属性

values: 就是解析完成后返回的字典。

主要方法

parse_args(self, args=None, values=None): 解析命令行参数,并返回选项名与值的字典。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值