Python命令行参数解析模块getopt使用实例
在开发一个Python命令行工具时,经常需要对命令行输入的参数进行解析。Python标准库中提供了getopt和argparse两个模块用于命令行参数解析。
本文介绍使用Python标准库中的getopt模块实现命令行参数的解析、处理。getopt模块用于解析命令行中的选项。
安装
Python的getopt模块是标准库中的模块,不需要安装。可以直接使用import语句导入使用。
基本用法
getopt模块提供了一个函数getopt来处理命令行选项,使用格式如下:
getopt.getopt(args, options, [long_options])
- args:要解析的命令行参数。
- options:命令行选项列表,包含单字符的选项名称,如果选项后面需要加参数,可以在选项后面添加一个冒号。例如:'hlp:'。
- long_options:命令行选项名称列表,包含非单字符的选项名称,如果选项后面需要加参数,可以在选项后面添加一个等号。例如:['help', 'output=']。
函数返回值是一个元组,其中包含两个元素,第一个元素是一个二维数组,表示参数值对,第二个元素是没有被解析的参数列表。
下面是一个简单的程序实例:
import getopt, sys
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print 'test.py -i <inputfile> -o <outputfile>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'test.py -i <inputfile> -o <outputfile>'
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print '输入的文件为:', inputfile
print '输出的文件为:', outputfile
if __name__ == "__main__":
main(sys.argv[1:])
以上程序通过命令行解析输入文件名和输出文件名。
执行命令:
$ python test.py -i inputfile.txt -o outputfile.txt
输出结果:
输入的文件为: inputfile.txt
输出的文件为: outputfile.txt
如果用户输入非法的参数,程序就会打印帮助信息,退出运行:
$ python test.py -z
test.py -i <inputfile> -o <outputfile>
多个值的选项
有些选项可能需要多个值,比如输入多个文件时需要用到的选项,这时候可以用getopt模块中的optparse类来代替getopt.getopt()方法。请看下面的例子。
import optparse
usage = "usage: %prog [options] arg1 arg2"
parser = optparse.OptionParser(usage)
parser.add_option("-f", "--file", dest="filename",
help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose", default=True,
help="don't print status messages to stdout")
(options, args) = parser.parse_args()
if options.filename:
print ('文件名为:', options.filename)
print ('是否缄默:', not options.verbose)
通过使用optparse模块提供的OptionParser类来处理多选项情况,使用方法和以前的getopt类似。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python命令行参数解析模块getopt使用实例 - Python技术站