the5fire的技术博客

关注python、vim、linux、web开发和互联网--life is short, we need python.


python中optparse的使用

作者:the5fire | 标签:   | 发布:2012-07-05 10:10 p.m. | 阅读量: 6355, 6272
写爬虫的时候其实一开始都是从写一个命令行程序开始的,然后慢慢的扩展,扩展到一个完整的系统,当然根据现在的经验,这样扩展起来的系统,不如直接设计好系统的整体结构来的漂亮。


说到命令行爬虫,其实需要很多参数,通过命令行传参数,估计大家也都常用,尤其是linux用户。比如我用的ubuntu,显示当前目录下的文件列表:ls -la或者是过滤显示:ls -la|grep 'log'

那么在python中怎么来接受命令行传递过来的参数呢?

比如要实现这样的功能:python fetch.py http://www.baidu.com

普通的python代码是这样的:

#demo1

import sys

if __name__ == '__main__':
url = sys.argv[1] #不可取的代码,根本没进行逻辑判断
fetch(url) #假设这个函数已经存在。


文艺的python代码就是用optparse来实现:

不过你使用的时候应该这样优雅的使用:
python fetch.py -u http://www.baidu.com

当你不知道需要传递什么参数的时候,只需python fetch.py -h,optparse会自动帮你输出你定义好的参数和说明

来看代码:
#demo2

from optparse import OptionParser

if __name__ == '__main__':

parser = OptionParser()

parser.add_option("-u", "--url", dest="url",
help="the webpage url you want to fetch.eg:-u http://www.baidu.com")

(options, args) = parser.parse_args() #parser.parse_args处理之后给option返回一个字典对象,对象的key就是你上面设置的dest的值

fetch(options.url)

二B的python代码就是用着optparse,做着老套的事:

#demo3

from optparse import OptionParser

if __name__ == '__main__':

parser = OptionParser()

parser.add_option("-u", "--url", dest="url",
help="the webpage url you want to fetch.eg:-u http://www.baidu.com")

(options, args) = parser.parse_args() #parser.parse_args处理之后,把不是以 -u 传递的参数作为数组传递到args中

fetch(args[0])


上面三个简单的小例子,简单的说了下optparse之于命令行的作用,那么来概念一下这个东西:
官网描述如下:“optparse is a more convenient, flexible, and powerful library for parsing command-line options ” 意思是,这个玩意是用来处理命令行参数时,一个方便、灵活、功能强大的库。

根多的使用还是上这里看吧,我觉得写的很详细了:http://docs.python.org/library/optparse.html

----EOF-----

扫码关注,或者搜索微信公众号:码农悟凡


其他分类: