我正在寻找最简单的方法来查看两个Office文件是否使用Python具有相同的内容。我的第一直觉是使用filecmp.cmp
,但这种方法在逻辑上失败了,因为两个文件不一定包含相同的二进制信息,即使它们具有相同的内容。
In [10]: import win32com.client
In [11]: word = win32com.client.Dispatch("Word.Application")
In [12]: doc = word.Documents.Add()
In [13]: doc.SaveAs(FileName = "test.docx")
In [14]: doc.SaveAs(FileName = "test2.docx")
In [15]: import filecmp
In [16]: filecmp.cmp("test.docx","test2.docx")
Out[16]: False
接下来,我可以尝试手动比较文件内容:
def compareWordDocs(self, worddoc1_path, worddoc2_path):
worddoc1 = self._wordapp.Documents.Open(FileName = worddoc1_path)
worddoc2 = self._wordapp.Documents.Open(FileName = worddoc2_path)
worddoc1_content_text = worddoc1.Content.Text
worddoc2_content_text = worddoc2.Content.Text
worddoc1.Close(SaveChanges = 0)
worddoc2.Close(SaveChanges = 0)
return worddoc1_content_text == worddoc2_content_text
但是,这也可能是一个问题,因为Office文档除了文本之外还可以包含许多内容。 Microsoft是否提供任何可以让我执行类似__eq__()
或.equals()
功能的功能,可以确定内容是否相等?我需要一个尽可能多的Microsoft Office产品的解决方案,尽管我意识到考虑到文件的性质,解决方案可能因产品而异。