Overview

python程序也可以拥有C语言风格的命令行参数,例如-h/--help输出帮助信息,-i/--input提示输入文件,-o/--output提示输出文件等等。除了清晰明了,还有一个好处就是输入参数的顺序可以随意一些。
python中,实现这个功能的函数跟C/C++中一样,也是getopt().下面用实际的代码展示一下。

1. getoptions.py

首先,我们定义一个usage()函数,用以展示帮助信息:

def usage():
    print "getoptions.py usage:"
    print "python getoptions.py <options> <source files> "
    print "-i,--input: the input filename."
    print "-o,--ouput: the output filename."
    print "-h,--help: show the help information."

主函数部分如下:

#引入sys和getopt包
import sys, getopt
opts, args = getopt.getopt(sys.argv[1:],'i:o:h',['input=','output=','help'])
inputFile=""
outputFile=""
for opt, arg in opts:
    if opt in ('-i','--input'):
        inputFile = arg
    elif opt in ('-o','--output'):
        outputFile = arg
    elif opt in ('-h', '--help'):
        usage()
        sys.exit(2)
    else:
        usage()
        sys.exit(2)
'''
业务逻辑代码
'''

主函数代码中,我们可以看到

(1). getopt这个函数是在getopt这个包中的。

这个函数接收2或者3个参数:第一个参数是命令行中所有的输入;第二个参数是所有的短option;第三个是可选项,长option。这个可选的标志就是方括号[].

(2). 注意到,i/o后面均有:,而h后面没有:

这表明,需要输入的option必须加:,而且,在长option后面还要加上赋值号=
不需要输入的option,不可以加:=

(3). 在解析option的时候,短的option前加-,长的option前加--

更多详细内容,请参考官方文档getopt — C-style parser for command line options