`
gashero
  • 浏览: 963232 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

getopt-解析命令行参数

阅读更多

 

getopt-解析命令行参数

译者: 日期:
gashero
2009-03-12

这个模块用于解析 sys.argv 中的命令行参数。他支持Unix的 getopt() 函数的功能。长选项的支持使用GNU软件。模块提供了一个函数和一个异常:

getopt(args,options[,long_options])

解析命令行参数,要去掉开头的运行程序引用。所以通常将args赋值为 sys.argv[1:] 。options参数可以跟一串字母,每个字母表示一个选项,含有后续值的选项后面加个冒号。

注意:不像GNU getopt() ,在非选项参数之后,所有的参数都被定义为非选项。

long_options,格式是字符串列表,选项名中不需要包含前导的"--"。长选项需要在参数后附带"=",然后跟一个值。如果只希望接受长选项,可以把options设置成空字符串。长选项会尽可能长的识别,例如long_options为 ['foo','frob'] ,则--fo会匹配--foo。但是--f不会匹配,而抛出 GetoptError 异常。

返回值包含两个元素:一个(option,value)列表,剩余的未解析参数。每个(option,value)对返回时,选项名包含前导的"-"或"--",选项参数作为第二个参数,或者为空字符串。它们在返回列表中出现的顺序与在命令行出现的顺序相同。长短选项混合。

gnu_getopt(args,options[,long_options])

这个函数工作方式类似于 getopt() ,除了使用GNU风格的扫描模式。这意味着选项和非选项可以混合在一起。而 getopt() 会在遇到非选项时就不再继续解析下去了。

如果选项第一个字符是"+",或者如果环境变量包含POSIXLY_CORRECT,遇到非选项参数时就停止解析了。

从Python2.3开始引入。

exception GetoptError

这个异常在发现无法解析的命令行参数时或一个需要参数的选项没有给出时抛出。异常参数是描述错误原因的。对于长选项,给一个不需要参数的选项加了参数也会抛出异常。属性msg和opt给出了错误信息和相关选项,如果没有特定的选项,则opt是空字符串。

exception error

就是 GetoptError 的别名,向后兼容。

例子,使用Unix风格:

>>> import getopt
>>> args='-a -b -cfoo -d bar a1 a2'.split()
>>> args
['-a','-b','-cfoo','-d','bar','a1','a2']
>>> optlist,args=getopt.getopt(args,'abc:d:')
>>> optlist
[('-a',''),('-b',''),('-c','foo'),('-d','bar')]
>>> args
['a1','a2']

使用长选项也很简单:

>>> s='--condition=foo --testing --output-file abc.def -x a1 a2'
>>> args=s.split()
>>> args
['--condition=foo','--testing','--output-file','abc.def','-x','a1','a2']
>>> optlist,args=getopt.getopt(args,'x',['condition=','output-file=','testing'])
>>> optlist
[('--condition','foo'),('--testing',''),('--output-file','abc.def'),('-x','')]
>>> args
['a1','a2']

脚本中的常见用法:

import getopt,sys

def main():
    try:
        opts,args=getopt.getopt(sys.argv[1:],'ho:v',['help','output='])
    except getopt.GetoptError,err:
        # 打印帮助信息并退出
        print str(err)
        usage()
        sys.exit(2)
    output=None
    verbose=False
    for o,a in opts:
        if o=='-v':
            verbose=True
        elif o in ('-h','--help'):
            usage()
            sys.exit()
        elif o in ('-o','--output'):
            output=a
        else:
            assert(False,'unhandled option'
    # ...

if __name__=='__main__':
    main()

 

1
0
分享到:
评论
1 楼 syre 2009-08-18  
OptionParser 功能更强一些。getopt 返回的东西经常还是要再解析一次。

相关推荐

    GetOpt一个命令行参数解析器

    例如,下面的代码展示了如何使用GetOpt解析命令行参数: ```php $options = getopt("f:", ["verbose::"]); if (isset($options['f'])) { $filename = $options['f']; // 处理文件 } if (isset($options['verbose']...

    getopt多参数解析函数具体分析命令行参数解析

    `getopt()`函数是C语言中用于解析命令行参数的标准函数,主要应用于Unix/Linux系统,也可以在其他支持C语言的环境中使用。它简化了对带有选项和参数的命令行输入的处理,使得程序能够优雅地解析和理解用户提供的...

    Linux系统C语言编程连接MySql数据库实现的用户 用户组 用户策略 管理系统(getopt函数方式解析命令行参数)

    1、Linux系统C语言编程连接MySql数据库实现的用户 用户组 用户策略 管理系统(getopt解析命令行参数).c 代码的源文件。 user-usergroup-authoritys.vsd user-usergroup-authoritys.jpg 数据库的图,以及图片。 2、...

    getopt:Erlang模块使用GNU getopt语法解析命令行参数

    Getopt for Erlang 命令行解析模块,其语法与GNU getopt相似。要求您只需要一个较新的Erlang / OTP版本。 该模块已经过从R13B到20的所有版本的Erlang的测试。 您还需要在系统路径中使用的最新版本。安装要编译模块,...

    getopt命令 解析命令行选项

    getopt命令用于解析命令行选项,检测给定的选项是否合法。在此命令中,选项部分主要用于影响getopt命令解析选项,其中optstring是需要解析的合法选项的字符串,paramenters通常是一组变量,用于存储从命令行获取的每...

    Linux系统C语言编程连接MySql数据库实现的用户 用户组 用户策略 管理系统(getopt解析命令行参数)

    表字段描述: 1、users表(用户)字段有(id_ |name_名称|create_time_创建时间|creator_id_由谁创建|认证方式|dyn_sn_口令认证方式所需口令|dyn_pass_sn KEY认证方式所需文件|remark_描述) 2、usergroups表(用户...

    命令行解析函数getopt用法详解

    getopt函数是命令行参数解析函数,用于解析命令行参数。它可以将命令行参数解析成选项和操作数,从而使程序能够正确地处理命令行参数。 getopt函数的声明如下: `int getopt(int argc, char * const argv[], const...

    c-getopt-long 使用手册

    在C编程中,`getopt()` 和 `getopt_long()` 是两个非常重要的函数,用于解析命令行选项。它们主要用于处理程序启动时用户输入的一系列参数,例如 `-h`(帮助)或 `-o`(带有参数的选项)。这些函数是C标准库的一部分...

    cpp-optparse是一个开源可移植的可重入的和可嵌入的类getopt命令行参数解析器

    cpp-optparse是一个专门为C++设计的开源库,用于解析命令行参数。它的主要目标是提供一个可移植、可重入且可嵌入的解决方案,类似于经典的getopt函数,但提供了更多的功能和灵活性。这个库特别适合那些需要在C++项目...

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

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

    getopt.h getopt.c getopt getopt_long 字符串 命令行

    这个函数通常用来解析命令行参数,其基本形式为: ```c int getopt(int argc, char *const *argv, const char *optstring); ``` - `argc` 是命令行参数的数量,包括程序名本身。 - `argv` 是指向命令行参数字符串...

    20120906_命令行参数解析1

    `getopt`函数是Linux系统中用于解析命令行参数的一个标准工具,它允许开发者处理带有选项和参数的命令行输入。本文将详细讲解`getopt`函数在C语言中的使用,同时也会提及bash脚本、Python和Go语言中的类似方法。 在...

    getopt windows实现

    这些函数是用于解析命令行参数的,常见于Unix和Linux系统中。在Linux中,它们提供了方便的方式来处理命令行选项和参数,特别是在编写跨平台程序时非常有用。 `getopt`函数是基础版本,用于解析单字符选项,例如`-f`...

    python 命令行参数

    `optparse`模块是Python中用于解析命令行选项的一个强大工具,它允许开发者以直观的方式定义和解析命令行参数。下面将详细介绍如何使用`optparse`模块,并通过一个示例来具体说明其工作原理。 ##### 初始化`...

    python解析命令行参数的三种方法详解

    本文将详细讲解Python解析命令行参数的三种常见方法:sys.argv、argparse模块和getopt模块。 1. **sys.argv**: `sys.argv` 是一个包含命令行参数的列表。第一个元素`sys.argv[0]`是脚本的名称(即Python解释器...

    gzip文件功能及命令行参数介绍.ppt

    在处理命令行参数时,`main` 函数是入口点,`argc` 存储参数数量,`argv` 是参数字符串数组。`getopt_long` 函数用于解析长格式的命令行选项,例如 `--d` 和 `--N`。程序通过遍历 `argv` 并调用 `switch` 语句来执行...

    linux解析命令行选项getopt_long用法解读.docx

    通过`getopt_long`循环解析命令行参数,然后根据选项进行相应的操作。 总之,`getopt_long`是Linux下解析命令行选项的强大工具,它简化了处理各种选项和参数的过程,使得程序更加简洁和易于维护。通过熟练掌握其...

    C语言中的命令行参数解析:深入理解与实践应用

    通过解析命令行参数,程序可以变得更加灵活和强大。本文介绍了命令行参数的基本概念、解析流程、常用技术,以及如何实现自定义的命令行解析器。希望这些信息能帮助读者更好地理解和掌握C语言中的命令行参数解析技术...

    命令行参数命令行参数的分析[文].pdf

    `getopt`函数是一个标准的C库函数,定义在`unistd.h`头文件中,它用于解析命令行参数。其基本语法如下: ```c int getopt(int argc, char const **argv, const char *optstring); ``` 这里的`argc`是命令行参数的...

    lua_alt_getopt-开源

    Lua_alt_getopt是一个开源的Lua模块,专门设计用于处理和解析命令行参数。在软件开发中,尤其是在命令行工具或脚本环境中,正确地解析和处理这些参数是至关重要的,因为它们提供了用户与程序交互的方式。Lua_alt_...

Global site tag (gtag.js) - Google Analytics