Python win32com模块:CompareDocuments

时间:2017-09-26 21:19:50

标签: python git win32com

我试图以编程方式使用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。

谢谢。

1 个答案:

答案 0 :(得分:0)

必须传递给CompareDocuments()的参数不是文件的路径(字符串),而是Document类类型。您必须先打开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无法找到它。