【Python】Python办公自动化案例:对比两个word文档并找出不同

262 阅读2分钟

案例:对比两个word文档并找出不同。

要比较两个Word文档并找出它们之间的差异,你可以使用Python的几个库来实现这一功能。这里有一个简单的步骤和代码示例,使用python-docx库来读取Word文档,并使用difflib库来比较文档内容。

步骤 1: 安装必要的库

首先,确保你已经安装了python-docx库。如果没有安装,可以通过pip安装:

pip install python-docx

步骤 2: 编写Python脚本

以下是一个简单的Python脚本,用于比较两个Word文档并打印出它们之间的差异。

import docx
import difflib
import os
'''在文件目录中存在两个待对比的word文档'''
# D:\Develop_project\Python_project\Python自动化办公\A01-对比Word文档差异(只涉及段落,不涉及表格)\word文档
# 获取文档对象
path = input('请输入文件目录:')
path_file = os.listdir(path)
print('----文档对比开始----','\n')
print('识别文档:%s和文档%s' % (path_file[0], path_file[1]),'\n')
file = docx.Document(path + "/" + path_file[0])
file2 = docx.Document(path + "/" + path_file[1])
print('----文档段落分析----','\n')
print("%s共有%s个段落:" % (path_file[0], str(len(file.paragraphs))))
print("%s共有%s个段落:" % (path_file[1], str(len(file2.paragraphs))),'\n')
print('----文档区别分析----','\n')
op = []
op2 = []
# 输出每一段的内容
for para in file.paragraphs:
    op.append(para.text)
​
for para1 in file2.paragraphs:
    op2.append(para1.text)
​
diff = difflib.Differ()
numbe = 0
for d in range(len(op)):
    if op[d] != op2[d]:
        numbe += 1
        print('第%s不同' % (numbe))
        print('\n', path_file[0] + '的内容为:')
        print('  文档1:' + op[d])
        print(path_file[1] + '的内容为:')
        print('  文档2:' + op2[d], '\n')
        print('----------------------------------------------------')
print('共有%s处不同' % (numbe))
print('文档对比完毕!!!!!!!!')

步骤 3: 运行脚本

将上述脚本保存为.py文件,然后运行这个脚本。

执行结果:

image.png

注意事项

  • 这个脚本比较的是文档中的文本段落,不考虑表格。
  • 如果文档非常大,读取和比较过程可能会消耗较多的内存和时间。

这个基本的脚本可以根据你的具体需求进行扩展和优化,例如添加更复杂的文本处理功能。