因為要用java批量處理word文檔的需要,需要用到的類型是doc,可是待處理的文檔卻是docx格式的,所以有了批量將docx轉化為doc的需要,下面的指令碼用於遍曆一個檔案夾下將所有的docx文檔另存新檔doc,普通的重新命名雖然最終得到的doc可以用docx開啟操作,但其實內部的格式與doc是不吻合的,當用java的第三方工具讀取時會出錯,下面的函數應用到了python win32 的功能,SaveAs(docxFullName,1)中,後面的參數設為1,那麼儲存得到的檔案將是doc格式的
#coding=gb2312
from win32com import client as wc
import os
word = wc.Dispatch('Word.Application')
#word.Visible = True #是否可見
#word.DisplayAlerts = 0
def docx2doc(dir):
i=0
j=0
for path, subdirs, files in os.walk(dir):
for wordFile in files:
wordFullName = os.path.join(path, wordFile)
dotIndex = wordFile.rfind(".")
if(dotIndex!=-1):
try:
fileSuffix = wordFile[(dotIndex + 1) : ]
if(fileSuffix == "docx"):
fileName = wordFile[:dotIndex]
docxName = fileName + ".doc"
docxFullName = os.path.join(r'E:\docx2docResult', docxName)
print '正在轉化:'+wordFullName
doc = word.Documents.Open(wordFullName)
i+=1
doc.SaveAs(docxFullName,1)
doc.Close()
except Exception:
j+=1
print wordFullName+':該檔案儲存失敗****************************************'
word.Quit()
print '嘗試轉換'+str(i)+'個docx'
print '其中成功的有:'+str(i-j)+'個'
print '失敗的共有:'+str(j)+'個'
if __name__ == '__main__':
docx2doc(r"E:\folder")