getopt模块
该模块是通过sys.argv获取用户输入的参数而专门用来处理命令行参数的。
格式:getopt.getopt(args, shortopts, longopts = []),该函数有两个返回值Opts 和 Args
node内置模块,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)
re模块?示例代码
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()
运行结果
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态