`
ppju
  • 浏览: 77825 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

python的getopt

阅读更多
在运行程序时,你可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能。目前有短选项和长选项两种格式。短选项格式为"-"加上单个字母选项;长选项为"--"加上一个单词。长格式是在Linux下引入的。许多Linux程序都支持这两种格式。在Python中提供了getopt模块很好的实现了对这两种用法的支持,而且使用简单,下面我就向大家介绍它的用法。

取得命令行参数

  在使用之前,首先要取得命令行参数。使用sys模块可以得到命令行参数。

import sys
print sys.argv

  然后在命令行下敲入任意的参数,如:

python get.py -o t --help cmd file1 file2

  结果为:

['get.py', '-o', 't', '--help', 'cmd', 'file1', 'file2']

  可见,所有命令行参数以空格为分隔符,都保存在了sys.argv列表中。其中第1个为脚本的文件名。

选项的写法要求

  对于短格式,"-"号后面要紧跟一个选项字母。如果还有此选项的附加参数,可以用空格分开,也可以不分开。长度任意,可以用引号。如以下是正确的:

-o
-oa
-obbbb
-o bbbb
-o "a b"

  对于长格式,"--"号后面要跟一个单词。如果还有些选项的附加参数,后面要紧跟"=",再加上参数。"="号前后不能有空格。如以下是正确的:

--help=file1

  而这些是不正确的:

-- help=file1
--help =file1
--help = file1
--help= file1

如何用getopt进行分析

  使用getopt模块分析命令行参数大体上分为三个步骤:

1.导入getopt, sys模块
2.分析命令行参数
3.处理结果

  第一步很简单,只要:

import getopt, sys

  就行了。

  第二步有些复杂,拿Python手册上的例子来说明:

try:
    opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])
except getopt.GetoptError:
    # print help information and exit:

1. 处理所使用的函数叫getopt(),因为是直接使用import导入的getopt模块,所以要加上限定getopt才可以。
2. 使用sys.argv[1:]过滤掉第一个参数(它是执行脚本的名字,不应算作参数的一部分)。
3. 使用短格式分析串"ho:"。当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。所以"ho:"就表示"h"是一个开关选项;"o:"则表示后面应该带一个参数。
4. 使用长格式分析串列表:["help", "output="]。长格式串也可以有开关状态,即后面不跟"="号。如果跟一个等号则表示后面还应有一个参数。这个长格式表示"help"是一个开关选项;"output="则表示后面应该带一个参数。
5. 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。
6. 整个过程使用异常来包含,这样当分析出错时,就可以打印出使用信息来通知用户如何使用这个程序。

  如上面解释的一个命令行例子为:

'-h -o file --help --output=out file1 file2'

  在分析完成后,opts应该是:

[('-h', ''), ('-o', 'file'), ('--help', ''), ('--output', 'out')]

  而args则为:

['file1', 'file2']

  第三步也比较简单。在这一步主要是对分析出的参数进行判断是否存在,然后再进一步处理。主要的处理模式为:

for o, a in opts:
    if o in ("-h", "--help"):
        usage()
        sys.exit()
    if o in ("-o", "--output"):
        output = a

  使用一个循环,每次从opts中取出一个两元组,赋给两个变量。o保存选项参数,a为附加参数。接着对取出的选项参数进行处理。(例子也采用手册的例子)

后记

  完整的程序例子大家可以参考Python手册。在Python中实现getopt功能真是非常容易。在本人所编写的htmlcombine程序(多个html文件合并程序)中也用到了这一技术。大家有兴趣可以看一看。

  版权所有limodou(chatme@263.net) 如要转载请保留此信息!
分享到:
评论

相关推荐

    python getopt详解及简单实例

    主要介绍了 python getopt详解及简单实例的相关资料,需要的朋友可以参考下

    python getopt模块使用实例解析

    主要介绍了python getopt模块使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    python getopt 参数处理小示例

    opts, args = getopt.getopt(sys.argv[1:], “t:s:h”, [“walletype=”, “servicename=”,’help’]) for a,o in opts: if a in (‘-t’, ‘–walletype’): walle_type = o elif a in (‘-s’, ‘–servicename’...

    python采用getopt解析命令行输入参数实例

    本文实例讲述了python采用getopt解析命令行输入参数的方法,分享给大家供大家参考。 具体实例代码如下: import getopt import sys config = { "input":"", "output":".", } #getopt三个选项,第一个一般为sys...

    Python中的getopt函数使用详解

    主要介绍了Python中的getopt函数使用详解,是Python进阶学习中的重要知识,需要的朋友可以参考下

    Python getopt模块处理命令行选项实例

    支持短选项模式和长选项模式例如 python scriptname.py -f ‘hello’ –directory-prefix=/home -t –format ‘a’ ‘b’复制代码 代码如下:import getopt, sysshortargs = ‘f:t’longargs = [‘directory-prefix=...

    python通过getopt模块如何获取执行的命令参数详解

    python脚本和shell脚本一样可以获取命令行的参数,根据不同的参数,执行不同的逻辑处理。 通常我们可以通过getopt模块获得不同的执行命令和参数。下面话不多说了,来一起看看详细的介绍吧。 方法如下: 下面我通过...

    Python命令行参数解析模块getopt使用实例

    主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式、短选项参数实例、长选项参数实例等内容,需要的朋友可以参考下

    crystal-getopt:从python移植getopt函数

    水晶-getopt 灵感来自 Python 中的 getopt.getopt 命令行工具非常有用的方法

    scripts:练习和学习python

    从Github学习python。 Python getopt模块,GetoptError()实例源码 fly.py:来自 fighting.py:练习使用pygame game.py:练习使用乌龟1.py:练习python的脚本

    Python 获得命令行参数的方法(推荐)

    本篇将介绍python中sys, getopt模块处理命令行参数 如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys...

    Optex-开源

    Python 2.4的optex模块可帮助用户脚本解析sys.argv中的命令行参数。 选项与Unix getopt()和Python getopt模块的解析方式不同。

    Python参数解析模块sys、getopt、argparse使用与对比分析

    今天小编就为大家分享一篇关于Python参数解析模块sys、getopt、argparse使用与对比分析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Python编程入门经典

    9.6.1 getopt——从命令行中得到 选项 137 9.6.2 使用一个以上的进程 139 9.6.3 线程——在相同的进程中 完成多个工作 141 9.7 本章小结 143 9.8 习题 144 第10章 创建模块 145 10.1 研究模块 145 10.1.1 导入模块 ...

    python3.6.5参考手册 chm

    Python参考手册,官方正式版参考手册,chm版。以下摘取部分内容:Navigation index modules | next | Python » 3.6.5 Documentation » Python Documentation contents What’s New in Python What’s New In ...

Global site tag (gtag.js) - Google Analytics