optionParser模块的使用方法

python中optionParser模块的使用方法

代码中经常看到这个模块,但是老是忘记怎么使用,故看其它博客试着写一篇适合自己理解的。

1.基本样式

from optparse import OptionParser # 引入模块

parser = OptionParser()  # 创建一个OptionParser对象
# 添加一个待定义命令行参数,及其帮助文档
parser.add_option("-p", "--pdbk", type = 'int', action="store_true",  # 长、短参数名、action值
                  dest="number", 
                  default=3, 
                  help="input number")  
options,args  =  parser.parser_args()  # 传入参数 

2.参数说明

options,args

其中,options 是一个字典,options = {dest : default/传入的参数};args是一个列表。如果不传入任何参数,则options使用[default]中的默认值, args为空列表,如无[default]值,则options结果为None;如果传入相应参数,则根据action值的情况进行选择,详情请看下面action参数详解处。

长短参数名

可选

type

传入参数的类型,包括int/float/string, 可选,默认’string‘

action

action 是 parse_args() 方法的参数之一,它指示 optparse 当解析到一个命令行参数时该如何处理。actions 有一组固定的值可供选择,[’store ‘, ’store_true’, ‘store_false’, ‘store_const’, ‘append’, ‘count ’, ‘callback’]。

  • ’store ‘默认,表示将命令行参数值保存在 options 对象里;
  • ’store_true’, ‘store_false’,用于处理命令行参数传入值的情况,通过如下对比可发现:
# 1.default无默认值+不传入参数
optParser = OptionParser()
optParser.add_option("-v", action="store", dest="verbose1")  
optParser.add_option("-m", action="store_true", dest="verbose2")
optParser.add_option("-q", action="store_false", dest="verbose3")
options, args = optParser.parse_args(args = [])#此处使用的是jupyetr notebook/lab需要填入args = [],其它IDE则不需要填入
# 结果
options={'verbose1': None, 'verbose2': None, 'verbose3': None}
args = []

# 2.default无默认值+传入参数
optParser = OptionParser()
optParser.add_option("-v", action="store", dest="verbose1")  
optParser.add_option("-m", action="store_true", dest="verbose2")
optParser.add_option("-q", action="store_false", dest="verbose3")

args = ['-v','good luck to you', 'arge','-m','good luck to you', 'arge','-q','good luck to you', 'arge'] #传入的参数
options, args = optParser.parse_args(args)
# 结果
options={'verbose1': 'good luck to you', 'verbose2': True, 'verbose3': False}
args = ['arge', 'good luck to you', 'arge', 'good luck to you', 'arge']

# 3.default有默认值+不传入参数
optParser = OptionParser()
optParser.add_option("-v", action="store", dest="verbose1", default='gggg')  
optParser.add_option("-m", action="store_true", dest="verbose2", default='gggg')
optParser.add_option("-q", action="store_false", dest="verbose3", default='gggg')
options, args = optParser.parse_args(args = [])#此处使用的是jupyetr notebook/lab需要填入args = [],其它IDE则不需要填入
# 结果
options={'verbose1': 'gggg', 'verbose2': 'gggg', 'verbose3': 'gggg'}
args = []

# 4.default有默认值+传入参数
optParser = OptionParser()
optParser.add_option("-v", action="store", dest="verbose1", default='gggg')  
optParser.add_option("-m", action="store_true", dest="verbose2", default='gggg')
optParser.add_option("-q", action="store_false", dest="verbose3", default='gggg')  

args = ['-v','good luck to you', 'arge','-m','good luck to you', 'arge','-q','good luck to you', 'arge'] #传入的参数
options, args = optParser.parse_args(args)
# 结果
options={'verbose1': 'good luck to you', 'verbose2': True, 'verbose3': False}
args = ['arge', 'good luck to you', 'arge', 'good luck to you', 'arge']

通过对比,可以很清楚地看到action=“store_true”, "store_false"在有传入参数时,相应的值才会变为‘True’, ‘False’,不传入参数时,根据有无[default]值决定。

当传入参数时,action="store"时,会将短参数后第一个值作为字典键的值,后续值放入列表中;action=“store_true”, "store_false"时,短参数后所有值放入列表中;

此外,还需要注意,当使用jupyetr notebook/lab时,需要填入args = [],否则会报错:

Usage: ipykernel_launcher.py [options]

ipykernel_launcher.py: error: no such option: -f
ERROR:root:Internal Python error in the inspect module.
Below is the traceback from this internal error.
……
TypeError: object of type 'NoneType' has no len()

help

当 optparse 解析到 -h 或者 –help 命令行参数时,会调用 parser.print_help() 打印程序的帮助信息。

from optparse import OptionParser

optParser = OptionParser()
optParser.add_option("-v", action="store", dest="verbose1",help = '输入点什么')  

options, args = optParser.parse_args(args=[])

print (optParser.print_help())

输出:

Options:
  -h, --help   show this help message and exit
  -v VERBOSE1  输入点什么
None

3.参考的原文链接🔗

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值