python3之getopt模块便用
getopt是python3中按C语言的格式来进行参数选项的处理模块。
getopt能够处理短选项和长选项:
-a 短选项
--add 长选项
处理过程分为三步:
第一步先取得要处理的选项集字符串
import sys
args = sys.argv[1:]
第二步调用方式
getopt.getopt(args,‘hvo:‘) 短选项
getopt.getopt(args,(hvo:),[‘help‘, ‘version‘, ‘output=‘]) 长短选项
如果只要长选项,可以把短选项改成‘‘字符串
说明
args 为选项集字符串
‘hvo:‘ 为短选项处理格式,h,v,都表示是为无参数,o:表示必有参数,必须要有参数的则在字符后面加“:”表示.
[‘help‘, ‘version‘, ‘output=‘] 为长选项处理格式,help,version都表示为无参数,output=表示为必有参数,表达工里需要在字符串后加 "=" 表示。
看官网的列子:
短选项例子
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‘]
getopt.getopt()返回两个值,
一个为optlist,参数选项和参数值组成的一个列表
一个为args,单独的参数值组成一个列表对应参数选项
写的时间需注意要匹配的参数和参数值要写在前面,不然会出现意外。
如
import sys import getopt args = ‘-a -b -cfoo -d bar a1 a2 a3‘.split() print(args) optlist,arg = getopt.getopt(args,‘abc:d:‘) print(‘optlist:‘) print(optlist) print(‘arg:‘) print(arg)
输出 [‘-a‘, ‘-b‘, ‘-cfoo‘, ‘-d‘, ‘bar‘, ‘a1‘, ‘a2‘] optlist: [(‘-a‘, ‘‘), (‘-b‘, ‘‘), (‘-c‘, ‘foo‘), (‘-d‘, ‘bar‘)] arg: [‘a1‘, ‘a2‘] 正常 如果把args改成args = ‘-a -b -cfoo xxx -d bar a1 a2 a3‘.split() [‘-a‘, ‘-b‘, ‘-cfoo‘, ‘xxx‘, ‘-d‘, ‘bar‘, ‘a1‘, ‘a2‘] optlist: [(‘-a‘, ‘‘), (‘-b‘, ‘‘), (‘-c‘, ‘foo‘)] arg: [‘xxx‘, ‘-d‘, ‘bar‘, ‘a1‘, ‘a2‘]这样会把-d选项当成一个对无应参数选项的参数值。 长选项处理过程一样 args为:‘-h -o file --help --output=out file1 file2‘ 在处理完成后,optlist应该是: [(‘-h‘, ‘‘), (‘-o‘, ‘file‘), (‘--help‘, ‘‘), (‘--output‘, ‘out‘)] 而args则为: [‘file1‘, ‘file2‘]
第三步为对分析出的参数进行处理
主要使用
for o,v in optlist: if o in ("-h","--help"): usage() sys.exit() if o in ("-o", "--output"): output = v
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。