须要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
python
参数1: sys.argv[1]
参数2: sys.argv[2]
Python提供了一个getopt模块,可用于解析命令行选项和参数。函数
该模块提供了两个功能和异常,以启用命令行参数解析。spa
getopt.getopt方法此方法解析命令行选项和参数列表。如下是此方法的简单语法命令行
-getopt.getopt(args, options, [long_options])
Pythongetopt.GetoptError异常code
当在参数列表中有一个没法识别的选项,或者当须要一个参数的选项不为任何参数时,会引起这个异常。
异常的参数是一个字符串,指示错误的缘由。 属性msg和opt给出错误消息和相关选项。字符串
import sys, getopt def main(argv): inputfile = '' outputfile = '' try: opts, args = getopt.getopt(argv, "hi:o:g:", ['help', 'ifile=', "ofile="]) # 长选项'='至关于短选项的':' print(opts) # 打印参数与值 [('-i', 'in'), ('-o', 'out')] except getopt.GetoptError as e: print(e) sys.exit(-2) for opt, arg in opts: if opt in ('-h', '--help'): print('usage: command_line_usage.py -i <inputfile> -o <outputfile>') sys.exit() elif opt in ("-i", "--ifile"): inputfile = arg elif opt in ("-o", "--ofile"): outputfile = arg print('Input file is "', inputfile) print('Output file is "', outputfile) if __name__ == "__main__": main(sys.argv[1:]) # 要处理的参数列表,sys.argv[0]为脚本名,因此用sys.argv[1:]过滤掉脚本名。
代码解释:
a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,因此用sys.argv[1:]过滤掉脚本名。
b) "hi:o:": 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。因此"hi:o:"就表示"h"是一个开关选项;"i:"和"o:"则表示后面应该带一个参数。
c) 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每一个元素为:(选项串,附加参数)。若是没有附加参数则为空串''。get
getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)
长选项格式举例:input
让一个脚本同时支持短选项和长选项
getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])it
D:\TestFPython>python 1_1_getopt.py -i in -o out [('-i', 'in'), ('-o', 'out')] Input file is " in Output file is " out