该模块是通过sys.argv获取用户输入的参数而专门用来处理命令行参数的。
格式:getopt.getopt(args, shortopts, longopts = []),该函数有两个返回值Opts 和 Args
args 为被解析的参数列表:sys.argv[1:] 从1开始是为了过滤掉argv列表里的第一个元素(argv列表里的第一个元素为执行脚本的名字)
shortopts(-) 为短选项,当一个短选项后面不带附加参数时,在短选项处写上选项字符后,其后面不带“:”;如果短选项还有附加参数,则在短选项处写上选项字符同时在后面加一个“:”号,如“ho:”中表示“h”是一个不带参数的选项字符,“o:”则表示其后面应该带一个参数 [短选项的选项字符为一个字母,该字母一般为对应长选项字符的首字母]
longopts = [](--) 为长选项列表,长选项后面不带附加参数时,在长选项处写上选项字符后,其后面不带“=”号;如果长选项还有附加参数,则在选项字符后面加上“=”号,如 ["help", "listen="] 中“help”是一个不带参数的选项字符,“listen=”则表示其后面应该带一个参数 [长选项的选项字符为一个单词]
Opts 为分析出的格式信息,是一个二元元组的列表;每个元素为:(选项,附加参数),如果没有附加参数则为空值。
Args 为不属于格式信息的剩余的命令行参数
在命令行中选项的写法要求
对于短选项,“-”号后面要紧跟一个选项字母,如果还有此选项的附加参数,可以用空格分开,也可以不分开,附加参数长度任意,也可以使用引号包括。如 -h、 -ho、 -hooo、 -h ooo、 -h "ooo"
对于长选项,“--”号后面要紧跟一个单词,如果还有此选项的附加参数,后面要紧跟“=”号,再加上参数,“=”号前后不能有空格。如 --help=file (错误写法:-- help=file、 --help =file、 --help = file、 --help= file)
示例代码
import sys
import getopt
#命令行格式文档帮助
def usage():
print(
'''
--------------info---------------
-h or --help 查看文档帮助
-w or --write 写入
-a of --add 添加
-r or --read 读
-c of --close 关闭文件
'''
)
sys.exit(0)
shortopts = "hw:a:rc" #可以写成"-h-w:-a:-r-c"
longtopts = ["help", "write=", "add=", "read", "close"] #这里的选项字符前一般不加--,如果加了会默认把--和选项字符作为一体,这样下面的opt就要改为----opt了
opts, args = getopt.getopt(sys.argv[1:], shortopts, longtopts)
#如果用户没有输入命令行,则提示用户输入“-h 或 --help查看文档帮助”
if ( len( sys.argv ) == 1 ):
print("输入 -h 或 --help 查看文档帮助”")
sys.exit(0)
try:
for opt,val in opts:
if opt in ("-h", "--help"):
usage()
elif opt in ("-w", "--write"):
print("%s 写入的内容为----> %s" % (opt, val))
elif opt in ("-a", "--add"):
print("%s 添加的内容为----> %s" % (opt, val))
elif opt in ("-r", "--read" ):
print("%s 正在读文件" % opt )
elif opt in ("-c", "--close"):
print("%s 正在关闭文件" % opt )
except getopt.GetoptError as e:
print(e)
usage()
运行结果