专栏首页Python程序员杂谈python中optparse的使用

python中optparse的使用

写爬虫的时候其实一开始都是从写一个命令行程序开始的,然后慢慢的扩展,扩展到一个完整的系统,当然根据现在的经验,这样扩展起来的系统,不如直接设计好系统的整体结构来的漂亮。

说到命令行爬虫,其实需要很多参数,通过命令行传参数,估计大家也都常用,尤其是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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python web开发环境搭建-web HelloWorld

      我的环境是:wamp1.7.4+python-2.5.2.+ mod_python-3.3.1.win32-py2.5-Apache2.2

    the5fire
  • python开发环境搭建

    python的开发环境是比较简单的,本来也没打算要写,不过现在想想还是写出来,一方面保证来我博客上python内容的完整性,一方面也可能有些人真的不会,毕竟我是...

    the5fire
  • sshd+chrome+switchsharp看风景

    前几天熊总为了让我们能够方便的使用google搜索,给我们几个人发了个福利——****的FQ帐号。于是我们开始欣赏墙外的风景。最近没事也到twitter上看看那...

    the5fire
  • 如何做好需求收集[来之《程序员》第2期]

    项目前期需求收集过程的效果好坏,会对软件产品的最终质量产生直接的影响。如何收集好需求,本文作者给出了一条行之有效的实际操作途径。 什么是需求收集? 需求收集,...

    阿新
  • shell脚本中如何不让父shell生成子shell

    #!/bin/sh   cd /home/user/Downloads   pwd  

    武军超
  • 【畅通工程 HDU - 1232 】【并查集模板题】

    话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲...

    _DIY
  • 网页开发之目前流行的五大浏览器内核介绍

    浏览器的内核是分为两个部分的,一是渲染引擎,另一个是JS引擎。现在JS引擎比较独立,内核更加倾向于说渲染引擎。

    用户1289394
  • Python数据分析师该如何选择IDE

    python是绝大多数数据分析师的必备工具之一,而一个好的IDE对于提高代码效率来说则至关重要。今天,仅就个人使用IDE的选择和习惯做以分享。

    luanhz
  • 辛辛苦苦敲一天,不如python写两行:一文带你见识办公自动化黑魔法

    不排除很多小伙伴,从小认识电脑,就开始装office全家桶。有什么重要的小笔记,小心心地写在小本本上,用了电脑,写一个word存档。

    程序员小助手
  • vim 乱码问题解决及原理全面分析

    Vim有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding(这些选项设置请...

    后端技术探索

扫码关注云+社区

领取腾讯云代金券