关于 docx 库只能操作 docx 的问题解决
** 需求:** 最近在研究 word 文档的抽取,发现 python 中 docx 库只能提取以 docx 结尾的文件,因此需要将 doc 文件转换为 docx。
基础知识了解
1. 什么是 doc?
汉语:文档(外语全称:Document)是电脑文件常见文件扩展名的一种,是微软 Word2003 以前版本的文本文档。
2. 什么是 docx?
docx 是微软 Word 文件的扩展名,是微软 Word2007 之后版本使用的格式,其基于 open XML 的压缩格式。
3.doc 和 docx 的区别?
doc 和 docx 都是 word 的文件格式 _,doc 格式是微软专用格式,并没有对外完全授权,而 docx 文件是 doc 文件的继承者。_
从存储方式来讲,doc 采用二进制的存储方式,而 docx 采用xml的方式,其实际上是一个打包的压缩文件;
从文件存储的大小来看,docx 相对于 doc 可以节省很多的空间;
从响应速度来看,docx 也要比 doc 更快;
代码奉上
import os
from win32com import client as wc
def save_doc_to_docx(rawpath): # doc 转 docx
'''
:param rawpath: 传入和传出文件夹的路径
:return: None
'''
word = wc.Dispatch(“Word.Application”)
# 不能用相对路径,老老实实用绝对路径
# 需要处理的文件所在文件夹目录
filenamelist = os.listdir(rawpath)
for i in os.listdir(rawpath):
# 找出文件中以.doc 结尾并且不以 ~$ 开头的文件($ 是为了排除临时文件的)
if i.endswith(‘.doc’) and not i.startswith(’$’):
print(i)
# try
# 打开文件
doc = word.Documents.Open(rawpath + i)
# # 将文件名与后缀分割
rename = os.path.splitext(i)
# 将文件另存为.docx
doc.SaveAs(path + rename[0] + ‘.docx’, 12) # 12 表示 docx 格式
doc.Close()
word.Quit()
if name == ‘main’:
# 注意:目录的格式必须写成双反斜杠
path = ‘C:\Users\Admin\Desktop\’
save_doc_to_docx(path)