python-docx无法处理 “doc格式” 文件,于是我这样做......

共 1793字,需浏览 4分钟

 ·

2021-02-13 23:00

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

故园东望路漫漫,双袖龙钟泪不干。

问题引入

目前的日常工作中,见的最多的还是对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库

这里需要做一个说明,如果采用以下方式,无法安装的话。
pip install win32com
那么,就采用下面这个方法进行安装。
python -m pip install pypiwin32

2)win32com库相关语法的说明

这里我们没有什么太高深的代码,只是有些代码怕大家看不懂,因此给大家做一个说明。
# 调用word程序
WordApp = win32com.client.Dispatch("Word.Application")

# 后台运行,不显示,不警告
WordApp.Visible = 0
WordApp.DisplayAlerts = 0

3)完整代码

这里我们采用“面向过程”的方式,去写这个代码,这样会让代码可读性更强。
import os
import time
import win32com
from win32com.client import Dispatch

def doc_to_docx(path):
   w = win32com.client.Dispatch('Word.Application')
   w.Visible = 0
   w.DisplayAlerts = 0
   doc = w.Documents.Open(path)
   # 这里必须要绝对地址,保持和doc路径一致
   newpath = allpath+'\\转换后的文档.docx'
   time.sleep(3# 暂停3s,否则会出现-2147352567,错误
   doc.SaveAs(newpath,12,False,"",True,"",False,False,False,False)
   # doc.Close() 开启则会删掉原来的doc
   w.Quit()# 退出
   return newpath
allpath = os.getcwd()
print(allpath)
doc_to_docx(allpath+'\\转换前的文档.doc')
最终效果:

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

浏览 79
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报