Python win32com模块:CompareDocuments

问题描述:

我试图以编程方式使用Word的内置比较函数在git中执行同一Word文档的两个版本的差异。Python win32com模块:CompareDocuments

我刚刚试图通过使用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类类型。您必须首先打开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找不到它提供对文件的绝对路径。