转换原因
想使用python的docx模块读取文档中内容进行处理
但当前文档为doc,且docx模块无法打开doc,故需要先将doc转为docx
使用python的win32com模块将doc转为docx
导入模块
from win32com.client import Dispatch
打开 doc
用Dispatch()的方式启动MS Word或与当前已执行的MS Word建立连结
word = Dispatch('Word.Application')
因当前传入的为文档名称(默认其与当前python模块在同目录下)
因传入Open的需是绝对路径
故使用 sys.path[0] 获取当前模块所在的目录
doc = word.documents.Open(目标doc文档的绝对路径)
另存为 docx
保存格式(FileFormat )为12表示保存为docx
但目前未在网络上搜索到明确的有关FileFormat的信息
doc.SaveAs(要创建的docx文档的绝对路径, FileFormat = 12)
善后
doc.Close()
word.Quit()
完整代码
from win32com.client import Dispatch
import sys
def docToDocx(docPath, docxPath):
'''将doc转存为docx'''
word = Dispatch('Word.Application')
pathPrefix = sys.path[0]+'\\'
doc = word.Documents.Open(pathPrefix+docPath)
doc.SaveAs(pathPrefix+docxPath, FileFormat=12)
doc.Close()
word.Quit()