IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 基于python的日志分析程序(解压缩 按关键字抽文件和日志行) -> 正文阅读

[开发工具]基于python的日志分析程序(解压缩 按关键字抽文件和日志行)

1.过程:解压文件并复制文件到指定的位置
解压缩.gz的文件:
使用gzip
例程:

import os
import re
import gzip
import shutil
# 解压文件
filePath = 'E:\\0.TLBOX文件整理\\17.千里眼测试\DS测试\9.18\home\\npsdk\log\\npsdk\\'
objPath = 'E:\\0.TLBOX文件整理\\17.千里眼测试\DS测试\9.18\\'
fileList = os.listdir(path=filePath)
gz_end = re.compile("gz$") #匹配以gz结尾的字符串
for file in fileList:
    mo_file = gz_end.search(file)
    if mo_file != None:
        print(file)
        print(filePath+file)
        f_name = file.replace(".gz", "")  # 进行重命名  去掉结尾的.gz
        g_file = gzip.GzipFile(filePath+file) # 解压指定目录的gz文件
        open(f_name,"wb+").write(g_file.read()) # 将解压后的文件内容写入到文件内
        shutil.copyfile(f_name,objPath+f_name)    # 复制文件
        g_file.close()
        os.remove(f_name)

使用到的内容:
re:正则表达式,匹配待处理的文件名字
os:进行文件删除等操作
shutil:复制文件到指定位置
gzip:解压和压缩文件
2. 程序主体:

#! C:\Python\Python36
# -*- coding: utf-8 -*-
# @Time : 2021/9/22 16:58
# @Author : liuchengyong
# @File : fileAnalysis.py
# @Software: PyCharm
# 分析文件程序
# 定义各种参数
import os
import shutil
import gzip
import re
import time
npPath = 'E:\\0.TLBOX文件整理\\17.千里眼测试\DS测试\9.18\home\\npsdk\log\\npsdk\\' #
spPath = 'E:\\0.TLBOX文件整理\\17.千里眼测试\DS测试\9.18\home\\npsdk\log\\south\\'
filePath = 'E:\\0.TLBOX文件整理\\17.千里眼测试\DS测试\9.18\\'
northLog = 'log'
proTcpLog = 'ProtocolModbusTcp'
proLog = 'ProtocolModbus'
dataprocLog = 'DataProc'
southLog = 'DeraSP'
offlineKey = ['device offline','create offline','devstatus']
gz_end = re.compile('gz$')
logList = []


# 解压gzip文件到指定位置
def gzipFile(gzPath,filePath):
    gzList = os.listdir(path=gzPath)
    for file in gzList:
        labelFile = gz_end.search(file)
        if labelFile != None:
            f_name = file.replace(".gz","")
            g_file = gzip.GzipFile(gzPath+file)
            open(f_name,"wb+").write(g_file.read())
            time.sleep(0.1)
            shutil.copyfile(f_name,filePath+f_name)
            g_file.close()
            os.remove(f_name)

# 文件抽取内容,在找到指定的文件之后,按照关键字抽取日志中的行
def fileExtract(fileList,keyWord):
    print("extract")
    for file in fileList:
        with open(filePath+file,'r') as f:
            while True:
                m = f.readline()
                xList = []
                for Word in keyWord:
                    x = m.rfind(Word)
                    xList.append(x)

                for x in xList:
                    if x != -1:
                        logList.append(m)
                        break
                if m == '':
                    break
# 时间段选择 按照给定的时间起止点,抽取特定时间段
def timeExtract(fileList,timePeriod):
    for file in fileList:
        with open(file,'r') as f:
            while True:
                m = f.readline()
                # print(m)
                # print(type(m))
                # print(m[0:23])
                if m[0:23] >= timePeriod[0] and m[0:23] <= timePeriod[1]:
                    logList.append(m)
                if m == '':
                    break

# 文件选择+关键字提取 按照文件名字的关键字提取文件  按照文件内的关键字提取日志内容  
def fileListExtract(path,keyWordF,keyWordL):
    # 列出文件 从中进行判断
    kList = []
    re_key = re.compile("^"+keyWordF)
    fList = os.listdir(path)
    for file in fList:
        labelF = re_key.search(file)
        if labelF != None:
            kList.append(file)
    print(kList)
    fileExtract(kList, keyWordL)
# 写入抽取的日志到指定文件
def fileWrite(terFile):
    with open(terFile, 'w') as f2:
        for offline in logList:
            f2.writelines(offline)

def main():
    npFile = 'npoffline.txt'
    spFile = 'spoffline.txt'
    gzipFile(spPath,filePath)
    fileListExtract(filePath,dataprocLog,offlineKey)
    fileWrite(spFile)
    gzipFile(npPath, filePath)
    fileListExtract(filePath,  northLog, offlineKey)
    fileWrite(npFile)




if __name__ == '__main__':
    main()
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-24 10:47:05  更:2021-09-24 10:49:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:16:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码