Python中的Getopt模块

Python中的Getopt模块

Getopt模块用于命令行选项的分析,其是基于UNIX getopt()函数的约定组织的。它主要用于分析类似于sys.argv的参数序列。我们也可以将这个模块理解为帮助脚本分析命令行参数的sys.argv。这个模块的工作方式类似于C编程语言中的getopt()函数,用于分析命令行参数。

Python Getopt函数

这个模块提供了一些主要的函数(同名),即getopt()。这个函数的功能是分析命令行选项和参数列表。

语法:

getopt.getopt ( args , options , [ long_options ] )

参数:

getopt.getopt()模块接受以下参数。

args: args是要传递的参数列表。

options: options是脚本想要识别的选项字母的字符串。需要参数的选项应该写上冒号(:)。

long_options: 这是一个包含长选项名称的字符串列表。需要参数的选项应该用等号(=)写入。

返回类型: getopt()模块函数的返回值由两个元素组成。返回值的第一个元素是(选项,值)对的列表,返回值的第二个元素是在剥离选项列表时剩下的程序参数列表。

支持的选项语法包括:

-   - a
-   - bvalue
-   - b value
-   -- noargument
-   -- withargument=value
-   -- withargument value

Getopt()函数的函数参数

getopt()函数包含三个参数:

  • getopt()模块的第一个参数是要分析的参数的分类。通常来自sys.argv[1:](程序名称在sys.argv[0]中被忽略)参数序列。
  • 第二个参数是单字符选项的选项定义字符串。如果任何选项需要一个参数,它的字母会在后面加上冒号[:]。
  • getopt()模块的第三个参数是长选项的名称序列。长选项的名称可以由多个字符组成,例如:–noargument或–withargument。在参数序列中,选项的名称不应包含“–”前缀。如果任何长选项需要一个参数,则它的名称应该用等号(=)标识。

用户可以在一次调用中结合长选项和短选项的形式。

简短选项形式

假设用户的程序使用了两个选项“-a”和“-b”,其中“-b”选项需要一个参数,则该值必须为“ab:”。

import getopt     #importing the getopt module

print getopt.getopt ( [ ' -a ' , ' -bval ' , ' -c ' , ' val ' ] , ' ab:c: ' )
$ python getopt_short.py

( [ ( ' -a ' , ' ' ) , ( ' -b ' , ' val ' ) , ( ' -c ' , ' val ' ) ] , [ ] )

长格式选项在Getopt()中

如果用户的程序想使用两个选项,比如“- noarguement”和“- witharguement”,则参数的顺序将为[‘noarguement’,’witharguement=’]。

import getopt                               # importing getopt () module
print getopt.getopt ( [ ' -noarguement ' , ' -witharguement ' , ' value ' , ' -witharguement2 = another ' ] , '  ' , [ ' noarguement ' , ' witharguement = ' , ' witharguement2 = ' ] )
$ python getopt_long.py
( [ ( ' -noarguement ' , ' ' ) , ( '?witharguement ' , ' value ' ) , ( ' -witharguement2 ' , ' another ' ) ] , [ ] )

示例1

import sys                                                 
# importing getopt module                         
import getopt  

def full_name ( ): 
    first_name = None
    last_name = None

    argv = sys.argv [ 1: ] 

    try: 
        opts , args = getopt.getopt ( argv, " f:l: " ) 

    except: 
        print ( " Error " ) 

    for opt , arg in opts: 
        if opt in [ ' -f ' ]: 
            first_name = arg 
        elif opt in [ ' -l ' ] : 
            last_name = arg 


    print ( first_name + " " + last_name ) 

full_name ( ) 

输出:

Python中的Getopt模块

在这个示例中,用户创建了一个名为full_name()的函数,该函数会接收命令行传入的名字和姓氏,并打印出用户的全名。用户还将名字缩写为’ f ‘,姓氏缩写为’ l ‘。

示例2

在这个示例中,用户可以使用完整形式的’ first_name ‘和’ last_name ‘,而不是使用简写形式的’ f ‘和’ l ‘。

import sys                                                 
import getopt                                           # import getopt module         

def full_name ( ): 
    first_name = None
    last_name = None

    argv = sys.argv [ 1: ] 

    try: 
        opts , args = getopt.getopt ( argv , " f:l: " ,  [ " first_name = " , " last_name = " ] ) 

    except: 
        print ( " Error " ) 

    for opt , arg in opts: 
        if opt in [ ' -f ' , ' --first_name ' ] : 
            first_name = arg 
        elif opt in [ ' -l ' , ' -- last_name ' ] : 
            last_name = arg 


    print ( first_name + " " + last_name ) 

full_name ( ) 

输出:

Python中的Getopt模块

用户需要记住,对于参数的简写形式使用单破折号(’ – ‘),对于参数的全写形式用户应该使用双破折号(’ — ‘)。

结论

在本文中,我们讨论了 getopt() 模块及其函数和参数。我们还解释了不同的实现形式,在命令行提示符中遵循适当的规则,并给出了明确的示例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程