需求:最近在研究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)