python optparse回顾

今天在看一个Python代码,里面用到了optparse模块。其中对下面这一句的返回结果我感到很奇怪。

(options, args) = parser.parse_args()
该程序的命令行为:

tool.py --syntax headphone_element --syntax-options 1 --generate output.xml
按我的理解,这个args变量的值应该为['headphone_element', '1', 'output.xml'],因为该函数一共传进去三个变量。但是真正的结果却是['output.xml'],让我感到很是奇怪,莫非是在代码中调用该模块的方式错误,但是仔细看了所有关于optparse的部分,和官网上的调用方式是完全一样的,怎么会出错呢?于是促使我花了一些时间好好理解这个optprase模块。肯定是在哪里理解错了。

果然经过将近一个小时的仔细阅读,我找到了自己理解错误的原因。在optparse的官网上有下面的两个关键字,option argument和positional argument。翻译过来就是选项参数和位置参数,究竟什么是选项参数和位置参数呢?

选项参数

一个参数后面跟着一个选项,该选项与这个参数紧密相关。当这个选项有值时,可以从这个参数列表中访问该选项的值。以下为选项参数的例子

-f foo
--file foo
位置参数

参数列表中选项参数被解析后剩下的所有参数。也就是说,选项和它们的参数被解析并从参数列表移出后剩下的部分。

例如,考虑如下假设的命令行:

prog -v --report report.txt foo bar
-v和--report都是选项。假设--report带一个参数,report.txt就是一个选项参数。foo和bar是位置参数。
我们再来看我上面提到的那个例子,--syntax,--syntax-options和--generate都是选项,但是--generate这个选项和前两个不一样,--generate是一个布尔值选项。 依据特定的选项是否出现来设置一个变量是真或者假是非常常见的。optarse用两个独立的行为来支持它们,store_ture和store_false。例如,你可能有一个verbose标记通过-v来打开,-q来关闭:

parser.add_option("-v", action="store_true", dest="verbose")
parser.add_option("-q", action="store_false", dest="verbose")
这里我们有两个不同的选项来对应到同一个变量。但optparse在命令行中遇到-v,那么它就把options.verbose设为True;但它在命令行中遇到-q,则把options.verbose设置为False.
也就是说--generate是后面不需要带参数的,它的出现会标记着它对应的变量为真。

到此就明白了,为什么args的值为'output.xml'的原因了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值