问题引入
目前的日常工作中,见的最多的还是对Excel文件和 Word文件的处理。对于Excel文件,如果出现xls、xlsx、xlsm混合文件应该怎么处理?对于Word文件,出现doc和docx的混合文件,又该怎么处理。
你可能会用VBA,但是不得不说,批量操作这些文件,还是要学Python,操作真的很简单。
为了增强文章的可读性,我们分2篇文章讲述这些问题。今天,我们讲述的是如何将doc文件 转换为 docx文件。

学了黄同学的原创**《Python自动化办公文档》后,你可能知道:我们常用python-docx来处理Word文件。但是,python-docx只能处理“.docx”的Word文件。因此,咱们需要批量将“.doc”**文件,批量转换为“.docx”文件后,再进行二次处理。

近日,就有一个女同事让我批量处理一下Word中的内容。这还是头一次处理这样的问题,为了解决这个问题,我只能:① 批量将doc文件,转换为docx文件;② 使用python-docx库,批量处理docx文件。
将doc文件,转换为docx文件
python-docx库,如何处理docx文件,我们的文档中已经为大家进行了详细的解释。今天黄同学就教大家写一段代码,实现这个doc文件转换为docx文件操作。
1)安装win32com库
这里需要做一个说明,如果采用以下方式,无法安装的话。
1pip install win32com 2 3
那么,就采用下面这个方法进行安装。
1python -m pip install pypiwin32 2 3
2)win32com库相关语法的说明
这里我们没有什么太高深的代码,只是有些代码怕大家看不懂,因此给大家做一个说明。
1# 调用word程序 2WordApp = win32com.client.Dispatch("Word.Application") 3 4# 后台运行,不显示,不警告 5WordApp.Visible = 0 6WordApp.DisplayAlerts = 0 7 8
3)完整代码
这里我们采用**“面向过程”**的方式,去写这个代码,这样会让代码可读性更强。
1import os 2import time 3import win32com 4from win32com.client import Dispatch 5 6def doc_to_docx(path): 7 w = win32com.client.Dispatch('Word.Application') 8 w.Visible = 0 9 w.DisplayAlerts = 0 10 doc = w.Documents.Open(path) 11 # 这里必须要绝对地址,保持和doc路径一致 12 newpath = allpath+'\\转换后的文档.docx' 13 time.sleep(3) # 暂停3s,否则会出现-2147352567,错误 14 doc.SaveAs(newpath,12,False,"",True,"",False,False,False,False) 15 # doc.Close() 开启则会删掉原来的doc 16 w.Quit()# 退出 17 return newpath 18allpath = os.getcwd() 19print(allpath) 20doc\_to\_docx(allpath+'\\转换前的文档.doc') 21 22
最终效果:

-------------------********************************** End **********-------------**-----********-**********************************
往期精彩文章推荐:

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。
本文转自 https://mp.weixin.qq.com/s/4a1VUzpLy_LadNkMAXMG8A,如有侵权,请联系删除。
