Python中的Getopt模块
getopt 模块是基于 Unix getopt()
函数建立的约定的命令行选项解析器。它通常用于解析参数序列,例如 sys.argv。换句话说,这个模块帮助脚本解析 sys.argv 中的命令行参数。它的工作原理类似于用于解析命令行参数的 C getopt()
函数。
Python getopt函数
该模块提供的第一个函数同名,即getopt()
。它的主要功能是解析命令行选项和参数列表。该函数的语法如下:
Syntax: getopt.getopt(args, options, [long_options])
Parameters:
args: List of arguments to be passed.
options: String of option letters that the script wants to recognize. Options that require an argument should be followed by a colon (:).
long_options: List of the string with the name of long options. Options that require arguments should be followed by an equal sign (=).
Return Type: Returns value consisting of two elements: the first is a list of (option, value) pairs. The second is the list of program arguments left after the option list was stripped.
示例 1:
import sys
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()
输出:
在这里,我们创建了一个函数full_name()
,它在从命令行获取名字和姓氏后打印全名。我们还将名字缩写为“f”,将姓氏缩写为“l”。
示例 2:现在让我们看一下这种情况,我们可以使用完整形式作为 'first_name' 和 'last_name',而不是像 'f' 或 'l' 这样的短格式。下面的代码使用完整形式来打印全名;
import sys
import getopt
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()
输出:
注意:代码中的参数应该使用短形式的单破折号('-')和长形式的双破折号('-')。