Python中如何对比两个JSON格式文件的内容?
比如我扫描端口上一次扫到 80,这次没有扫描到,怎么对比 json 文件从而找出区别点
Python中如何对比两个JSON格式文件的内容?
5 回复
不限制 python ?diff file1 fies2 这样可以吗?
直接上代码。用 json.load() 读文件,然后对比两个加载后的Python对象就行。最简单的是直接用 == 操作符。
import json
def compare_json_files(file1_path, file2_path):
"""
比较两个JSON文件的内容是否完全相同。
参数:
file1_path (str): 第一个JSON文件的路径
file2_path (str): 第二个JSON文件的路径
返回:
bool: 如果内容完全相同返回True,否则返回False
"""
try:
# 读取并解析第一个JSON文件
with open(file1_path, 'r', encoding='utf-8') as f1:
data1 = json.load(f1)
# 读取并解析第二个JSON文件
with open(file2_path, 'r', encoding='utf-8') as f2:
data2 = json.load(f2)
# 直接比较两个Python对象
return data1 == data2
except FileNotFoundError as e:
print(f"文件未找到: {e}")
return False
except json.JSONDecodeError as e:
print(f"JSON解析错误: {e}")
return False
except Exception as e:
print(f"发生错误: {e}")
return False
# 使用示例
if __name__ == "__main__":
result = compare_json_files('file1.json', 'file2.json')
if result:
print("两个JSON文件内容完全相同")
else:
print("两个JSON文件内容不同")
关键点:
json.load()把JSON字符串转成Python字典/列表。- 直接用
==比较两个对象,Python会自动递归比较所有元素。 - 加了异常处理,文件找不到或者JSON格式错了能知道。
如果想看具体哪里不同,可以用 difflib 或者把对象转成字符串再对比:
import json
from difflib import unified_diff
def detailed_json_diff(file1_path, file2_path):
"""显示两个JSON文件的具体差异"""
with open(file1_path, 'r') as f1, open(file2_path, 'r') as f2:
# 按行读取,方便显示行级差异
lines1 = f1.readlines()
lines2 = f2.readlines()
# 使用unified_diff生成差异报告
diff = unified_diff(lines1, lines2,
fromfile=file1_path,
tofile=file2_path)
diff_output = list(diff)
if diff_output:
print("发现差异:")
for line in diff_output:
print(line.rstrip())
else:
print("文件内容完全相同")
一句话总结:用 json.load() 读进来,然后 == 比较最直接。
把 json 转成 python 的 dict
可以之间用 diff

