2009-04-25

用python的getopt解释命令行参数

python也有linux下getopt, 不过python的getopt就比linux下的整洁得多了. linux下的getopt在参数出错的时候真是乱七八糟.我试了多次都没看明白它是怎么样的. python的getopt在参数出错的时候就简单多了,只抛出一个GetoptError异常.

getopt的原型是getopt(args, shortopts, longopts=[]), 这个函数定义在与它同名的getopt模块中. 所以,要使用它就得先import getopt. GetoptError也在getopt这个模块中定义.

函数中的args是待解释的命令行参数, 一般传递sys.argv给它. 函数只对sys.argv[1:]进行解释; shortopts是要它认得的短选项; longopts是要它认得的长选项


>>> from getopt import getopt
>>> from getopt import GetoptError
>>> import sys
>>> sys.argv = [ "-a", "b", "-d", "-g", "--long"]
>>> try:
list = getopt(sys.argv, "a:dgp", "long=")
except GetoptError,e:
print e.msg, e.opt


option --long requires argument long

上面getopt的第二个参数里面的冒号表示它前面的选项要求带参数, 同理, 第三个参数的=表示它前面的选项要带参数

getopt的返回值是一个列表, 这个列表有两个元素, 这两个元素也都是列表, 其中第一个元素的元素的一个个的tuple, 每个tuple是(opt, value)这样的选项-参数对; 第二个元素是它没解释到的,剩下的命令行参数
>>> sys.argv = [ "-a", "b", "-d", "-g", "--long", "kkkk", "bbbb"]
>>> try:
list = getopt(sys.argv, "a:dgp", "long")
except GetoptError,e:
print e.msg, e.opt


>>> list
([('-a', 'b'), ('-d', ''), ('-g', ''), ('--long', '')], ['kkkk', 'bbbb'])
>>>

转载请注明出处 http://fornote.blogspot.com

没有评论:

发表评论