14.2.4 一个完整的例子
以下代码清单中的例子是一个更完整的程序,它有5个选项:-o,-v,–output,–verbose和–version。其中-o,–output和–version选项都需要一个参数。
import getopt
import sys
version = '1.0'
verbose = False
output_filename = 'default.out'
print('ARGV :',sys.argv[1:])
try:
options,remainder = getopt.getopt(
sys.argv[1:],
'o:v',
['output=',
'verbose',
'version=',
])
except getopt.GetoptError as err:
print('ERROR:',err)
sys.exit(1)
print('OPTIONS :',options)
for opt,arg in options:
if opt in ('-o','--output'):
output_filename = arg
elif opt in ('-v','--verbose'):
verbose = True
elif opt == '--version':
version = arg
print('VERSION :',version)
print('VERBOSE :',verbose)
print('OUTPUT :',output_filename)
print('REMAINING :',remainder)
可以采用多种不同方式来调用这个程序。如果不带任何参数地调用这个程序,那么会使用默认设置。
单字符选项与其参数可以使用空白符分隔。
或者,也可以把选项和值结合到一个参数中。
也可以类似地将长格式选项与值分隔。
一个长格式选项与它的值结合时,选项名和值要用一个=分隔。
14.2.5 缩写长格式选项
只要提供了一个唯一的前缀,就不必在命令行上完整地拼写出长格式选项。
如果没有提供一个唯一的前缀,则会产生一个异常。