模块简介
getopt
是Python
自带的用于处理命令行参数的模块
源码解析
加上这段只是为了让这篇初学者都不屑于浏览的文章看起来高大上~
先贴上主要代码:
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
等,如果需要接收参数的值,则需要使用:
。 第三个参数为长命令参数,格式可为字符串或数组,比如
help
、version
等,同样,如果需要接收参数值,则需要使用=
号,如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 !!"