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

文章目录

1. 使用Python打开日志文件

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

python 复制代码
log_file = open('path/to/logfile.log', 'r')

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

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

1.常规方法:从前往后依次读取

步骤:open打开文件。

读取文件,把文件所有行读入内存。

遍历所有行,提取指定行的数据。

优点:简单,方便

缺点:当文件大了以后时间太慢,无法忍受

2.推荐方法:

步骤:open打开日志文件。

移动文件读取指针到文件末尾。

从后往前移动指针直到合适的位置。

读取文件,提取指定行的数据。

优点:时间相对固定,适合处理大文件

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)

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

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

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

python 复制代码
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.将内容推送到企业微信

python 复制代码
# 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()函数来关闭打开的日志文件。下面是一个示例代码:

python 复制代码
log_file.close()

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

整体代码

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()
相关推荐
a5986525 分钟前
云手机怎么选?ARM服务器原生架构和X86模拟器差别很大
服务器·arm开发·智能手机
BK贝壳3 小时前
亿级用户签到位图选型复盘:用 bool-hybrid-array 扛冷启动打卡,也把它和 Roaring/Redis 的边界测清楚了
数据结构·python·性能优化·numpy
2601_966949655 小时前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
程序员清风8 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
在世修行9 小时前
智学文枢:页面切换与跨页数据预填
python·桌面应用·signal·1024程序员节·pyside·跨页跳转·状态预填
2601_9628857210 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
打工仔折腾 AI10 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
yyuuuzz10 小时前
跨境站点日志时区混乱的排查记录
运维·服务器·网络·云计算·aws·1024程序员节
信誓旦旦的程序猿10 小时前
【Python量化实战宝典 #21】北向资金跟随手册:聪明钱择时信号(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
严谨的麻辣烫11 小时前
静态 ISP 代理请求超时怎么排查?Python 与 curl 实战
python·http·requests·1024程序员节·网络排障