2017-09-26 116 views
0

我試圖以編程方式使用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。

謝謝。

回答

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找不到它提供對文件的絕對路徑。