Python模块getopt简解

简单介绍getopt模块是如何实现解析参数以及如何简单使用例子

模块简介

getoptPython自带的用于处理命令行参数的模块

源码解析

加上这段只是为了让这篇初学者都不屑于浏览的文章看起来高大上~
先贴上主要代码:

def getopt(args, shortopts, longopts = []):
    opts = []
    if type(longopts) == type(""):
        longopts = [longopts]
    else:
        longopts = list(longopts)
    while args and args[0].startswith('-') and args[0] != '-':
        if args[0] == '--':
            args = args[1:]
            break
        if args[0].startswith('–'):
            opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
        else:
            opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])
    return opts, args
从代码可以看出,getopt需要两个必选参数和第三个可选参数,第一个为字符串,也就是我们命令行中所输入的参数。
第二个参数也为字符串,格式如hvt:,这个是短命令参数,比如-h-v等,如果需要接收参数的值,则需要使用:
第三个参数为长命令参数,格式可为字符串或数组,比如helpversion等,同样,如果需要接收参数值,则需要使用=号,如test=
实现的原理就是通过字符串循环判断解析出对应的参数和值,就这么简单。使用也一样,so Easy~

简单例子

from getopt import getopt
from sys import argv
if __name__ == '__main__':
	opts, args = getopt(argv[1:])
	for key, value in opts:
		if key in ['-h', '--help']:
			print 'help~~'
		elif key in ['-t', '--test']:
			print 'The test value is:%s'%value
		else:
			print '??%s:%s'%(key, value)
然后命令行输入
$ ./test.py -t hahahah!
$ ./test.py --help
$ ./test.py --test="哈哈哈..hahah   hahah !!"