Python之optparse模块

一、关于解析命令行参数的方法

  关于“解析命令行参数”的方法我们一般都会用到sys.argvoptparse模块。 

     optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数

     实例化一个 OptionParser 对象(可以带参,也可以不带参数),带参的话会把参数变量的内容作为帮助信息输出。

二、optparse介绍

2.1 optparse的简单用法如下:

import optparse

parser = optparse.OptionParser() #创建optparse对象parser

parser.add_option("-s", "--server", dest="server", help="ftp server ip_address") #使用add_option()来定义命令行参数 
parser.add_option("-P", "--port", type="int", dest="port", help="ftp server port")
parser.add_option("-u", "--username", dest="username", help="username info")
parser.add_option("-p", "--password", dest="password", help="password info")
fakeArgs=['-f',"file.txt",'-v','good luck to you','arg2','arg'] #用一个数组模拟命令参数
options,args=optParser.parse_args(fakeArgs) #使用parse_args()来解析命令行。

 

add_option函数的参数:

dest:用于保存输入的临时变量,其值通过options的属性进行访问,存储的内容是dest之前输入的参数,多个参数用逗号分隔
type: 用于检查命令行参数传入的参数的数据类型是否符合要求,有 string,int,float 等类型
help:用于生成帮助信息
default: 给dest的默认值,如果用户没有在命令行参数给dest分配值,则使用默认值

2.2optparse的简单深入解析

新建对象
parser=OptionParser()

形参包括:

    def __init__(self,
                 usage=None,
                 option_list=None,
                 option_class=Option,
                 version=None,
                 conflict_handler="error",
                 description=None,
                 formatter=None,
                 add_help_option=True,
                 prog=None,
                 epilog=None):

新建选项

可以使用:add_option, add_option_group, add_options.

add_option(…):
add_option 方法中前面的参数为命令的选项, 可以为等价的短名或者长名,一般是前面为短名,后面为长名.

可以配置的参数有以下:

  • dest: 可以决定解析后,取值时的属性名, 尤其适于有多个等价参数. 不指定时就是选项不加-的字符串.
  • type: 选项的值类型,值的默认类型是字符串, 这里将值指定为其他类型.
  • default: 缺省值. 没有设置缺省值的为None.
  • help: 选项中有 -h 时打印的 help 信息.
  • metavar: 表示显示到 help 中选项的默认值;
  • choices: 当 type 设置为 choices 时,需要设置此值.
  • const: 指定一个常量值给选项, 该常量值将用于后面store_const和append_const,一起合用.
  • action: 用于控制对选项和参数的处理,像无参数选项处理,可以设置为以下几种字符串:
    • "store": 储存值到 dest 指定的属性,强制要求后面提供参数;
    • "store_true": 当使用该选项时,后面的 dest 将设置为 true, 不跟参数.
    • "store_false": 当使用该选项时,后面的 dest 将设置为 false. 常配合另一个 "store_true" 的选项使用同一个 dest 时使用. 不跟参数.
    • "append": 储存值到 dest 指定的属性,并且是以数组的形式, 必须跟参数.
    • "store_const": 用来存储参数为 const 设置的值到 dest 指定的属性当中.常用于 dest 为同名2个以上选项时的处理. 不跟参数.
    • "append_const": 用来存储参数为 const 设置的数组到 dest 指定的属性当中. 不跟参数.
    • "count": 使用后将给储存值到 dest 指定的属性值加1,可以统计参数中出现次数.用途不大. 不跟参数.
    • "callback": 后面指定回调函数名(不加括号),会将相应opt和args传给回调函数.
    • "help", "version": 对应为帮助和版本. 要另外自己设计时使用.

当 action 设置为 store_ture / store_false 时, 解析参数时, 如果有值时为 Ture / False, 没有值时为 None.
当 dest 相同时, 一个 action 设置为 store_false, 另一个 action 设置为 store_ture 时, 解析参数时,以在后面出现的为准.

选项相关函数:

  • 可以用来同时设置多个选项的默认参数
def set_default(self, dest, value):

def set_defaults(self, **kwargs):

 

  • 检查是否有相应选项
def has_option(self, opt_str):
  • 删除选项
def remove_option(self, opt_str):
eg.

parser = OptionParser()
parser.add_option('-f', '--file', action='store', dest='file', help='file to handle')
if parser.has_option('-f'):
    print('content -f')
    parser.set_default('-f', 'myFile')
    parser.remove_option('-f')

if not parser.has_option('-f'):
    print('do not content -f')

输出

content -f
do not content -f
  • 添加选项组 add_option_group()
    如果 options 很多的时候, 可以进行分组,然后进行添加. 分组的好处是, 对一系列程序参数可以分一个组,如果有独立的 description , 可以另外处理.使用如下:
group = OptionGroup(parser)  #创建分组
group.add_option() #添加选项
parser.add_option_group(group) #将分组加入到解释器
  • 添加选项数组 add_options([Option1,…])
    将各个Option对象放在一个列表里再一起添加.

参数解析 parse_args()

使用 parse_args() 对参数进行解析,默认是使用 sys.argv[1:] 作为参数, 也可以传递一个命令行参数列表: parse_args(list).

parse_args() 返回的两个值:

  • options,它是一个对象,保存有命令行参数值。只要知道命令行参数名,如 input,就可以访问其对应的值:options.input 。
  • args ,它是没被解析的命令行参数的列表。

帮助文档

默认自动带有 -h 和 --help 来输出帮助文档, 输出后程序终止.
帮助文档由三部分组成:

  1. usage 帮助部分,
    usage 帮助部分一般在 OptionParser 初始化时输入,为第一个参数, 也可以用具体形参名指定. 可以使用 %prog 来表示当前的程序名.

  2. description 描述部分
    在初始化 OptionParser 时 description 形参指定的内容.

  3. 选项以及选项说明部分
    选项加入时定义的说明文字

OptionParser 的形参 version 可以指定 --version 输出的字符串, 同样支持%prog, 如 version="%prog 1.0"

# 一个帮助文档解释字符串
hstr = '%prog custom help string'
parser = OptionParser(hstr, description='custom description')
get_usage(), get_description(), get_version(): 获得对应的字符串.
print_help(), print_usage(), print_description(), print_version(): 输出相应内容
error(str): 出错并输出str.

 



 

转载于:https://www.cnblogs.com/-qing-/p/10874955.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值