Python中解析命令行参数常用的库有argparse和getopt。本文将详细讲解如何使用getopt解析命令行输入参数的完整攻略。
安装getopt
在Python中,getopt是标准库中的一部分,因此无需额外安装,可以直接使用。
使用示例
例子一
下面是一个简单的示例,演示如何使用getopt来解析命令行参数。
import getopt
import 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
可以看到,代码中定义了两个变量inputfile和outputfile,用来存储解析命令行参数得到的输入文件和输出文件。getopt方法通过传入命令行参数列表和包含短选项、长选项的字符串来解析命令行参数,opts包含解析后的命令行选项和其对应的值,args包含未被解析的命令行参数。
例子二
下面是另一个示例,演示如何添加必选参数和可选参数。
import getopt
import sys
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv, "hi:o:v", ["ifile=", "ofile=", "verbose"])
except getopt.GetoptError:
print('test.py -i <inputfile> -o <outputfile> [-v]')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('test.py -i <inputfile> -o <outputfile> [-v]')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
elif opt in ("-v", "--verbose"):
print('Verbose mode')
if not inputfile or not outputfile:
print('test.py -i <inputfile> -o <outputfile> [-v]')
sys.exit()
print('输入的文件是:', inputfile)
print('输出的文件是:', outputfile)
if __name__ == "__main__":
main(sys.argv[1:])
运行python test.py -i inputfile.txt -o outputfile.txt -v,将得到以下输出:
Verbose mode
输入的文件是: inputfile.txt
输出的文件是: outputfile.txt
可以看到,代码中增加了一个可选参数-v,用于控制是否输出详细信息。在处理选项的循环中,增加了对-v选项的处理代码,用于输出详细信息。此外,还增加了对必选参数的判断,如果输入文件和输出文件为空,则输出提示信息。
总结
本文详细讲解了使用getopt解析命令行输入参数的完整攻略,包括库的安装和两个示例说明。getopt虽然功能简单,但在处理简单的命令行参数时很实用,特别是对于需要处理大量命令行参数的Python程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python采用getopt解析命令行输入参数实例 - Python技术站