Python win32com 模块:CompareDocuments

Python win32com module: CompareDocuments

我正在尝试以编程方式使用 Word 的内置比较功能对 git 中同一 Word 文档的两个版本进行比较。

我一直在尝试通过使用 Python win32com 模块使代码的比较部分脱离实际。这是我目前所拥有的:

import win32com.client as win32
word = win32.gencache.EnsureDispatch('Word.Application')
word.CompareDocuments('old.docx', 'new.docx')

但是当我 运行 这段代码时,我得到以下错误:

TypeError: The Python instance can not be converted to a COM object

我对 win32com 模块或 COM 对象了解不多,我是不是误用了这个功能?有没有更好的调用Word比较函数的模块?我不想只将 Word 文档保存为文本并比较文本,我更喜欢使用 Python.

谢谢。

必须传递给 CompareDocuments() 的参数不是文件的路径(字符串),而是 Document class 类型。您必须先打开 Word 文档,然后将它们传递到 CompareDocuments():

import win32com.client as win32
word = win32.gencache.EnsureDispatch('Word.Application')

doc_old = word.Documents.Open('C:/abs/path/to/file/old.docx')
doc_new = word.Documents.Open('C:/abs/path/to/file/new.docx')

word.CompareDocuments(doc_old, doc_new)

注意打开时必须提供文件的绝对路径,否则win32com找不到它。