由于python-docx不支持doc类型的文档,所以如果要用python-docx处理doc文档的话就要先想办法将doc文档转换成docx文档。不久前我们已经学了怎么使用win32com将xls转换成xlsx,既然win32com也支持Word,转换思路还是很清晰的,只要使用win32com打开一个doc再将其保存为docx即可,代码如下:
import os
from win32com import client
def doc_to_docx(path):
print("路径:{}".format(path))
if not os.path.isabs(path):
print(f"不是绝对路径")
return
if not os.path.exists(path):
print("文件不存在")
return
if os.path.splitext(path)[1] != ".doc":
print("文件类型不对")
return
app = client.Dispatch('Word.Application')
app.DisplayAlerts = False
document = app.Documents.Open(path)
document.SaveAs(os.path.splitext(path)[0] + ".docx",12)
document.Close()
app.Quit()
if _ _name_ _ == '_ _main_ _':
file = r"E:\xxx\test.doc"
doc_to_docx( file)
代码中client.Dispatch(‘Word.Application’)是打开一个Word应用,然后使用Open再SaveAs这两个操作,调用SaveAs()保存文档的时候要把格式类型设置为12,12代表docx文档类型,不写也没关系,因为它在保存时默认类型就是docx。再啰嗦一遍,win32com只适合在安装有Office或WPS的Windows电脑上运行,最后还要记得关闭文档和应用,避免造成内存泄露。