python-自动化篇-运维-实现读取日志文件最后一行的时间

news2024/10/6 5:55:11

文章目录

  • 1. 使用Python打开日志文件
  • 2.python读取文件最后一行两种方式
  • 3.读取当前时间,进行两者相减,超时报警
  • 4.将内容推送到企业微信
  • 5. 关闭日志文件
  • 整体代码

1. 使用Python打开日志文件

在开始实时读取日志文件之前,我们首先需要打开一个日志文件。可以使用Python的内置函数open()来打开文件,并且还可以设置打开方式和编码方式。下面是打开一个日志文件并指定为只读模式的示例代码:

log_file = open('path/to/logfile.log', 'r')

请注意,这里的path/to/logfile.log需要替换为你要打开的日志文件的实际路径。

2.python读取文件最后一行两种方式

1.常规方法:从前往后依次读取
步骤:open打开文件。
读取文件,把文件所有行读入内存。
遍历所有行,提取指定行的数据。
优点:简单,方便
缺点:当文件大了以后时间太慢,无法忍受
2.推荐方法:
步骤:open打开日志文件。
移动文件读取指针到文件末尾。
从后往前移动指针直到合适的位置。
读取文件,提取指定行的数据。
优点:时间相对固定,适合处理大文件

log_file = open('C:/Users/qq/Desktop/atmb.log', 'r')
fname = 'C:/Users/qq/Desktop/atmb.log'
with open(fname, 'r', encoding='utf-8') as f:  # 打开文件
    lines = f.readlines()  # 读取所有行
    first_line = lines[0]  # 取第一行
    last_line = lines[-1]  # 取最后一行
   # print('文件' + fname + '第一行为:'+ first_line)
    print('文件' + fname + '最后一行为:' + last_line)

在这里插入图片描述

可以将最后一行的内容保存到另一个文件atmb1中

#1.写入单行
file = open('C:/Users/qq/Desktop/atmb1.log', mode='w', encoding='utf-8')
# write 写入
file.write(lines[-1])
# 关闭文件,不关闭文件可能会出问题
file.close()

接着,利用下面脚本提取最后一行的第一列出来即可

import codecs
f = codecs.open('C:/Users/qq/Desktop/atmb1.log', mode='r', encoding='utf-8')  # 打开txt文件,以‘utf-8'编码读取
line = f.readline()      # 以行的形式进行读取文件
list = []
while line:
    a = line.split(',')  # 当数据以“,”分隔时,用line.split(',')
    b = a[0:1]           # 选取需要读取数据的列数
    list.append(b)       # 将数据添加在list中
    line = f.readline()
    print(b)

在这里插入图片描述

3.读取当前时间,进行两者相减,超时报警

4.将内容推送到企业微信

# 3、企业微信机器人发送消息:提供给企业微信发送图片信息所需

import requests
import json
 
class WXWork_SMS :
 
    # 文本类型消息
    def send_msg_txt(self) :
        headers = {"Content-Type" : "text/plain"}
        send_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=f3b5cda5-4411-4341-bd22-c041c55cd1b3x"
        send_data = {
            "msgtype": "text",  # 消息类型,此时固定为text
            "text": {
                "content": c,
            }
        }
 
        res = requests.post(url = send_url, headers = headers, json = send_data)
        print(res.text)
 
if __name__ == '__main__' :
    sms = WXWork_SMS()
    sms.send_msg_txt()

5. 关闭日志文件

在结束对日志文件的操作后,我们需要关闭文件以释放资源。可以使用Python的close()函数来关闭打开的日志文件。下面是一个示例代码:

log_file.close()

在本文中,我们介绍了如何使用Python实时读取日志文件。通过打开日志文件、实时读取日志文件的新内容、实时读取日志文件的更新部分以及关闭日志文件等步骤,我们可以灵活地获取并分析系统的日志信息。

整体代码

log_file = open('C:/Users/qq/Desktop/atmb.log', 'r')
fname = 'C:/Users/qq/Desktop/atmb.log'
with open(fname, 'r', encoding='utf-8') as f:  # 打开文件
    lines = f.readlines()  # 读取所有行
    first_line = lines[0]  # 取第一行
    last_line = lines[-1]  # 取最后一行
   # print('文件' + fname + '第一行为:'+ first_line)
   # print('文件' + fname + '最后一行为:' + last_line)
    print(lines[-1])
#1.写入单行
file = open('C:/Users/qq/Desktop/atmb1.log', mode='w', encoding='utf-8')
# write 写入
file.write(lines[-1])
# 关闭文件,不关闭文件可能会出问题
file.close()

import codecs
 
# 读取并保存txt文件数据前三列数据
f = codecs.open('C:/Users/qq/Desktop/atmb1.log', mode='r', encoding='utf-8')  # 打开txt文件,以‘utf-8'编码读取
line = f.readline()      # 以行的形式进行读取文件
list = []
while line:
    a = line.split(',')  # 当数据以“,”分隔时,用line.split(',')
    b = a[0:1]           # 选取需要读取数据的列数
    list.append(b)       # 将数据添加在list中
    line = f.readline()
    print(b)
    c= ''.join(map(str, b))  # 将数组转换为字符串,企业微信无法发送数组b,需要转换为字符串c
    print(c)

    
# 3、企业微信机器人发送消息:提供给企业微信发送图片信息所需

import requests
import json
 
class WXWork_SMS :
 
    # 文本类型消息
    def send_msg_txt(self) :
        headers = {"Content-Type" : "text/plain"}
        send_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=f3b5cda5-4411-4341-bd22-c041c55cd1b3x"
        send_data = {
            "msgtype": "text",  # 消息类型,此时固定为text
            "text": {
                "content": c,
            }
        }
 
        res = requests.post(url = send_url, headers = headers, json = send_data)
        print(res.text)
 
if __name__ == '__main__' :
    sms = WXWork_SMS()
    sms.send_msg_txt()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1428352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入了解键盘:分类、工作原理与操作指南

键盘 键盘是计算机使用的主要输入设备之一,键盘主要由创建字母、数字和符号并执行附加功能的按钮组成,通常用于向计算机或其他数字设备输入文本、命令和各种控制信号。 键盘是计算机中最重要的字符输入设备,其基本组成元件是按键开关&#…

画质和场景双需求下,海信电视U8KL的变与不变

又到一年春节,最近几年大家过年的方式越来越丰富,但是跟家人在一起看春晚依然是主流,电视也是过年不可或缺的家庭成员。 当然,随着大家对生活品质的要求更高,对电视的要求也变得更高了。比如,现在春晚直播…

ESP-IDF增加自定义组件开发过程记录

ESP-IDF增加自定义组件开发过程记录 记录一下,自定义组件开发方式容易实现代码的复用。比如说在实现一些芯片或者模块的代码上,网上先找找有的话就可以不用自己写了,实在没有的时候只能自己辛苦摸索编写了。 前言: 因为对cmake也不懂&…

纯血鸿蒙来了,鸿蒙App开发该如何提速

“全世界做产品挣钱的公司很多,但有能力打造操作系统的公司没有几家,最后世界上的操作系统就只有三套:鸿蒙、iOS和安卓。” --- 360集团创始人、董事长周鸿祎 “HarmonyOS实现了AI框架、大模型、设计系统、编程框架、编程语言、编译器等全栈…

Google Earth Engine tools——利用geetools中的algorithms算法实现hsv

简介 锐化HSV是一种图像处理技术,它是通过调整图像的颜色分量来增强图像的细节和清晰度。HSV是一种颜色空间模型,它基于人类视觉感知的方式来描述颜色。HSV代表色调(Hue)、饱和度(Saturation)和明度&…

正点原子--STM32中断系统学习笔记(1)

1、什么是中断? 原子哥给出的概念是这样的:打断CPU正常执行的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断。 当发生中断时,当前执行的程序会被暂时中止,进而进入中断处理函…

Vector CANdb++ Editor和CANdb++ Admin的区别

目录 1 CANdb Editor和CANdb Admin的功能偏差 2 CANdb Program窗口 3 下载并安装CANdb Editor和CANdb Admin 3.1 安装CANdb Admin.J1939 3.0 SP27 优质博文推荐阅读(单击下方链接,即可跳转): Vector工具链 CAN Matrix DBC …

解析Excel文件内容,按每列首行元素名打印出某个字符串的统计占比(超详细)

目录 1.示例: 1.1 实现代码1:列数为常量 运行结果: 1.2 实现代码2:列数为变量 运行结果: 1.示例: 开发需求:读取Excel文件,统计第3列到第5列中每列的"False"字段占…

Linux VLAN相关概念、转发原理及处理流程

背景 二、三层转发是网络工程师经常接触到的一个问题,VLAN配置是二、三层转中一个很重要的概念,在配置VLAN的情况下,内核对报文是如何处理的呢? 概念 了解VLAN转发,首先必须知道VLAN相关概念; VLAN作用 V…

闲聊电脑(4)硬盘分区

夜深人静,万籁俱寂,老郭趴在电脑桌上打盹,桌子上的小黄鸭和桌子旁的冰箱又开始窃窃私语…… 小黄鸭:冰箱大哥,上次你说的那个“分区”和“格式化”是什么意思? 冰箱:分区么,就是分…

Kotlin快速入门系列10

Kotlin的委托 委托模式是常见的设计模式之一。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。与Java一样,Kotlin也支持委托模式,通过关键字by。 类委托 类的委托即一个类中定义的方…

VPP学习-startup.conf配置文件

背景 VPP(Vector Packet Processing,矢量报文处理),作为一个开源的高性能数据包处理框架,旨在提供可扩展、灵活且高效的网络数据包处理能力;由于传统Linux 内核协议栈整体网络吞吐性能的局限性,…

MySQL | 一定会走索引却没有走的原因,日志报conversion相关错误

TL;DR:函数作用于表字段时,索引会失效。 具体情况 Indexes如下: SQL如下: explain select *from accounting_status_flow_tab_00000000WHERE ( client_no 6848134000 and loan_no 0119324345936016261000 )order by modif…

MySQL 8.0 引入 innodb_flush_method 等新参数的系统调用分析

本文我们将讨论如何在操作系统级别验证 innodb_flush_method 和 innodb_use_fdatasync 修改为默认值之外的其它值(特别是 O_DIRECT 是最常用的)后的效果。 介绍 首先,让我们定义该 innodb_flush_method 参数的作用。它规定了 InnoDB 如何管…

加快“数实融合”推进新型工业化 济南个性化体检“把脉”企业数字化转型难点痛点

加快“数实融合”推进新型工业化 济南个性化体检“把脉”企业数字化转型难点痛点 以主流价值为光,解读“济南故事”,解码C位新闻。爱济南客户端推出“追光”栏目,发挥新型主流媒体权威性和创新性,着眼经济社会发展紧要处、关键处、…

Java学习day26:和线程相关的Object类的方法、等待线程和唤醒线程(知识点详解)

声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!) 往期回顾 Java学习day25:守护线…

压力测试工具-Jmeter使用总结

目录 一.前言 二.线程组 三.线程组的组件 四.线程组-HTTP请求 1、JSON提取器 2、XPATH提取器 3、正则表达式提取器 五.线程组-断言 1、响应断言 2、JSON断言 六.创建测试 1.创建线程组 2.配置元件 3.构造HTTP请求 4.添加HTTP请求头 5.添加断言 6.添加查看结果树…

Python之Numpy 和 Pandas

目录 2.1 numpy import numpy as np array np.array([[1,2,3],[2,3,4]]) print(array) print(number of dim:,array.ndim) print(shape:,array.shape) print(size:,array.size)pandas 1,pandas 基本介绍 df2 pd.DataFrame({A:1.,B:pd.Timestamp(20130102),C:pd.Series(1,i…

算法设计与分析实验:最短路径算法

一、网络延迟时间 力扣第743题 本题采用最短路径的思想进行求解 1.1 具体思路 (1)使用邻接表表示有向图:首先,我们可以使用邻接表来表示有向图。邻接表是一种数据结构,用于表示图中顶点的相邻关系。在这个问题中&am…

【C语言进阶篇】assert宏 使用详解

文章目录 一、assert简介 二、assert使用方法和规则 2.1 头文件 2.2 原型 2.3 功能 2.4 示例 2.5 assert的打开与关闭 三、注意事项 3.1 运行效率问题 3.2 assert只适用于调试版本 3.3 资源释放与清理 3.4 过度依赖 四、总结 个人主页: 倔强的石头的…