14.2.6 GNU式选项解析
正常情况下,一旦遇到第一个非选项参数,选项处理就会停止。
要想以任意顺序混合选项和非选项参数,则要使用gnu_getopt()。
import getopt
import sys
version = '1.0'
verbose = False
output_filename = 'default.out'
print('ARGV :',sys.argv[1:])
try:
options,remainder = getopt.gnu_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.7 结束参数处理
如果getopt()在输入参数中遇到–,那么它会停止处理余下的参数(作为选项)。这个特性可以用来传递看上去像选项的参数值,如以一个短横线(-)开头的文件名。