当前位置: 首页 > news >正文

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

文章目录

  • 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 jsonclass 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,需要转换为字符串cprint(c)# 3、企业微信机器人发送消息:提供给企业微信发送图片信息所需import requests
import jsonclass 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.lryc.cn/news/292711.html

相关文章:

  • QT SQL
  • C++(20):通过concept及nlohmann将数据转换为字符串
  • Transformer 自然语言处理(四)
  • BRAIN :帕金森病中与痴呆相关的动态功能连接改变
  • harmony os系统
  • 2024美赛数学建模A题思路源码——七鳃鳗性别比例和生态系统关系
  • C语言的基础学习
  • PostGIS教程学习二十二:使用触发器追踪历史编辑操作
  • 【PTA浙大版《C语言程序设计(第4版)》编程题】练习7-4 找出不是两个数组共有的元素(附测试点)
  • C++面试:数据库不同存储引擎的区别以及如何选择
  • HTML -- 常用标签
  • 【Qt】QInputDialog setGeometry: Unable to set geometry 问题
  • Flink问题解决及性能调优-【Flink rocksDB读写state大对象导致背压问题调优】
  • 代码随想录算法训练营第二十四天|● 理论基础 ● 77. 组合
  • 买保险如何填健康告知
  • 云贝教育 | 【技术文章】Oracle 19c RAC修改网络
  • Android SELinux:保护您的移动设备安全的关键
  • 第十三章认识Ajax(四)
  • 使用 Node.js 和 Cheerio 爬取网站图片
  • 2024美赛数学建模E题思路源码
  • 解决Docker AList本地挂载失效的问题。
  • Emmet常用语法总结
  • Android 12系统源码_页面管理(四)获取系统当前最上层的Activity信息
  • RK3588开发板Ubuntu与开发板使用U盘互传
  • 【BUG】golang gorm导入数据库报错 “unexpected type clause.Expr“
  • TCP/IP网络模型
  • github连不上
  • Excel计算表达式的值
  • 26元/月起!腾讯云一键自动搭建4核16G幻兽帕鲁服务器
  • 【C++游戏开发-01】推箱子