大家好,小编为大家解答python文件对比结果生成txt文件的问题。很多人还不知道python数据比对怎么做,现在让我们一起来看看吧!
目标
通过业务监控模块的学习,更好的保障服务的稳定运行
业务监控模块监控方式
手工方式 - 系统命令,脚本命令 监控工具 - Cacti、Nagios、Zabbix、Prometheus、等等 监控平台 - 阿里云、华为云、等等
业务监控模块主要内容
文件内容差异对比 - 配置级别的变动 文件目录差异对比 - 文件级别的变动 电子邮件发送通知 - 变动后的通知应急 探测web服务质量 - 网站的访问效果
业务监控之文件对比
字符比对
基本语法
系统命令 diff - 比对文件内容是否一致 模块介绍 difflib – 实现字符串的差异对比,然后以版本控制风格进行输出
操作思路 1 传递文件内容,然后进行简单的行切割 2 创建Differ对象 3 在Differ对象的基础上,借助于compare方法将两个内容进行比较 4 结果以join的方式进行展示
注意:difflib模块自带,无需安装,可直接导入使用
简单实践
'''
字符对比 difflib
'''
import difflib
text1 = "ni hao a wo shi shui shui shui ni huan ying wo ma"
text2 = "ni hao A wo shi Shui shui shui ni huan ying wo ma"
text1_line = text1.splitlines()
text2_line = text2.splitlines()
# 3 文件内容比较
# 3-1 创建Differ对象
differ_object = difflib.Differ()
# 3-2 使用compare方法比较内容
diff_result = differ_object.compare(text1_line,text2_line)
# 3-3 拼接比较后的效果
result_message = "\n".join(diff_result)
print("字符对比结果:\n{}".format(result_message))
结果
字符对比结果:
- ni hao a wo shi shui shui shui ni huan ying wo ma
? ^ ^
+ ni hao A wo shi Shui shui shui ni huan ying wo ma
? ^ ^
格式比对1
基础知识
简介: HtmlDiff()类的make_file()方法 – 生成美观的HTML文档
操作步骤: 1 传递文件内容,然后进行简单的行切割 2 创建Differ对象 3 在Differ对象的基础上,借助于compare方法将两个内容进行比较 4 直接查看生成的对比文件即可
对比效果: 1 颜色 2 统计
简单实践1
'''
字符对比 difflib
'''
import difflib
text1 = """ni hao a
wo shi shui shui shui ni
huan ying wo ma"""
text2 = """ni hao A
wo shi Shui shui shui
ni huan ying wo ma"""
text1_line = text1.splitlines()
text2_line = text2.splitlines()
# 3 文件内容比较
# 3-1 创建Differ对象
differ_object = difflib.HtmlDiff()
# 3-2 使用compare方法比较内容
diff_result = differ_object.make_file(text1_line,text2_line)
# 3-3 拼接比较后的效果
# print(diff_result)
with open("","w") as file:
file.write(diff_result)
打开,结果
简单实践2
以表格样式进行查看
'''
字符对比 difflib
'''
import difflib
text1 = """ni hao a
wo shi shui shui shui ni
huan ying wo ma"""
text2 = """ni hao A
wo shi Shui shui shui
ni huan ying wo ma"""
text1_line = text1.splitlines()
text2_line = text2.splitlines()
# 3 文件内容比较
# 3-1 创建Differ对象
differ_object = difflib.HtmlDiff()
# 3-2 使用compare方法比较内容
diff_result = differ_object.make_table(text1_line,text2_line)
# 3-3 拼接比较后的效果
with open("","w") as file:
file.write(diff_result)
打开html文件,结果
配置实践
实践需求
需求: 读取多个配置文件,通过HtmlDiff方式 比对文件的内容区别 操作思路: 1 准备两个Nginx软件配置文件 2 分别读取两个配置文件 3 读取内容 4 文件内容为空的基本判断 5 内容的比较 6 结果的输出
实践代码
准备两个配置文件 ngnix.conf1
server{
listen 80;
server_name ;
location / {
root /var/www/html;
index ;
try_files $uri $uri/ = 404;
}
}
ngnix.conf2
server{
listen 88;
server_name ;
location / {
root /var/www/html;
index ;
try_files $uri $uri/ = 404;
}
}
测试代码
import difflib
import sys
# 1 准备两个Nginx软件配置文件
# 2 分别读取两个配置文件
# argv -- 命令行;argv[0] 脚本名,argv[1]是第一个参数,以此类推
try:
textfile1 = [1]
textfile2 = [2]
except Exception as e:
print("报错信息如下:{}".format(e))
print("使用方式:_name filename1 filename2")
()
# 3 读取内容
def readfile(filename):
try:
with open(filename,"r") as f:
text = f.read().splitlines()
return text
except Exception as error:
print("读取文件错误:{}".format(error))
()
# 4 文件内容为空的基本判断
if textfile1 == "" or textfile2 =="":
print("脚本的参数不允许为空,请检查")
print("使用方式:_name filename1 filename2")
()
# 5 内容的比较
# 5-1 读取文件
text1_line = readfile(textfile1)
text2_line = readfile(textfile2)
# 5-2 创建Htmldiff对象
diff_object = difflib.HtmlDiff()
# 5-3 对文件进行比较
diff_result = diff_object.make_file(text1_line,text2_line)
# 6 结果的输出
with open('','w') as f:
f.write(diff_result)
注意: 在虚拟环境中,创建文件和操作文件需要对应的权限宿迁趣品网络。 sudo touch sudo chown python.python ./* 正常的对比测试: 异常对比测试 - 参数不够 异常对比测试 - 文件无法读取 异常对比测试- 传递参数为空