python|python 读取ng日志并根据关键字分离出相关行数据
运维时需要分析ng的log日志, 然后根据关键字读取相关行数据出来分析, 避免打开整个文件太大导致缓慢.
代码如下
'''
读取keyWordName关键字的出现次数
'''
# 计数
count =0
# 每次读取文件内容大小
sizeInt =1000000
matchList = []
# 查询关键字
def findWordCount(f, sizeInt, keyWordName):
global count
count =0;
while True:
line = f.readline(sizeInt)
if not line:
break
pass
lineStr =str(line)
if lineStr.find(keyWordName) > -1:
matchList.append(lineStr)
count +=1
# print(lineStr)
return count
【python|python 读取ng日志并根据关键字分离出相关行数据】# 打印
def printKeywordCount(f, sizeInt, keyWordName):
count = findWordCount(f, sizeInt, keyWordName)
print(count)
print(keyWordName +"出现次数: " +str(count))
# 查询文件里关键字出现次数
def findTheKeyWordCount(fileName, keyWordName):
with open(fileName, "r", encoding="utf-8", errors='ignore')as f:
printKeywordCount(f, sizeInt, keyWordName)
def saveMatchList(saveFileName, matchList):
contents =""
for iin range(0, len(matchList)):
contents += matchList[i] +"\n"
save2File(saveFileName, contents)
# 保存文件
def save2File(fileName, content):
f =open(fileName, "w")
num = f.write(content)
print(num)
# 关闭打开的文件
f.close()
# 执行工作
def doMyJob(fileName, keyWordName, saveFileName):
# 查询关键字
findTheKeyWordCount(fileName, keyWordName)
# 打印
# print(matchList)
# 保存文件
saveMatchList(saveFileName, matchList)
if __name__ =='__main__':
# 文件所在目录
fileName ="D:/code/workspace/python/test1/test/files/error.log"
# 需要查询的关键字
keyWordName ="[error]"
# 解析后的内容保存文件
saveFileName ="D:/code/workspace/python/test1/test/files/error_logs_20180704.txt"
doMyJob(fileName, keyWordName, saveFileName)
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- 日志打卡
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)