运维入门- python实现对.log日志文件的无用行内容过滤,便于留存有价值的信息

本文主要是介绍运维入门- python实现对.log日志文件的无用行内容过滤,便于留存有价值的信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码原文:

def remove_offline_messages(file_path):try:# 打开文件并读取所有行with open(file_path, 'r', encoding='utf-8') as file:lines = file.readlines()# 过滤掉包含'pc消息离线pcadmin'的行filtered_lines = [line for line in lines if '丢弃消息======' not in line]# 将过滤后的内容写回文件with open(file_path, 'w', encoding='utf-8') as file:file.writelines(filtered_lines)print("文件处理完成,相关行已删除。")except Exception as e:print(f"处理文件时出错: {e}")# 使用方法
file_path = 'ws_business.log'
remove_offline_messages(file_path)

这段 Python 代码定义了一个函数 remove_offline_messages,用于从指定文件中删除包含特定字符串的行,并将处理后的内容写回文件。下面是对这段代码的详细解释:

函数定义

def remove_offline_messages(file_path):
  • def:定义一个函数。
  • remove_offline_messages:函数名,表示删除离线消息。
  • file_path:函数参数,表示要处理的文件路径。

尝试读取文件并处理

try:
  • try:开始一个异常处理块,用于捕获和处理可能出现的异常。
打开文件并读取所有行
# 打开文件并读取所有行
with open(file_path, 'r', encoding='utf-8') as file:lines = file.readlines()
  • with open(file_path, 'r', encoding='utf-8') as file:使用 with 语句以只读模式 ('r') 打开文件,编码方式为 utf-8with 语句会在 file 对象退出上下文时自动关闭文件。
  • file.readlines():读取文件中的所有行,并将它们存储在 lines 列表中,每一行作为列表的一个元素。
过滤掉不需要的行
# 过滤掉包含'丢弃消息======'的行
filtered_lines = [line for line in lines if '丢弃消息======' not in line]
  • 列表推导式 filtered_lines = [line for line in lines if '丢弃消息======' not in line]:遍历 lines 列表,将不包含字符串 '丢弃消息======' 的行保留,形成新的列表 filtered_lines
将过滤后的内容写回文件
# 将过滤后的内容写回文件
with open(file_path, 'w', encoding='utf-8') as file:file.writelines(filtered_lines)
  • with open(file_path, 'w', encoding='utf-8') as file:使用 with 语句以写入模式 ('w') 打开文件,编码方式为 utf-8。此时文件内容会被清空。
  • file.writelines(filtered_lines):将 filtered_lines 列表中的每一行写入文件。

打印处理完成信息

print("文件处理完成,相关行已删除。")
  • print:输出提示信息,表示文件处理已完成,并且相关行已被删除。

异常处理

except Exception as e:print(f"处理文件时出错: {e}")
  • except Exception as e:捕获所有异常,并将异常实例赋值给 e
  • print(f"处理文件时出错: {e}"):输出异常信息,提示处理文件时出现了错误,并显示具体的异常内容。

函数调用

# 使用方法
file_path = 'ws_business.log'
remove_offline_messages(file_path)
  • file_path = 'ws_business.log':定义文件路径变量,指向要处理的日志文件。
  • remove_offline_messages(file_path):调用 remove_offline_messages 函数,传入文件路径,执行文件内容的过滤和写入操作。

代码的功能和目的

  • 功能:从指定文件中删除包含特定字符串(‘丢弃消息======’)的行,并将处理后的文件内容写回原文件。
  • 目的:清理日志文件或其他文本文件,移除不需要的或不相关的信息,保持文件内容的整洁。

应用场景

  • 清理日志文件,移除不必要的消息,减少文件体积。
  • 过滤数据文件,删除包含特定关键词的行。

文章介绍由chatgpt协助整理

这篇关于运维入门- python实现对.log日志文件的无用行内容过滤,便于留存有价值的信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047436

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_