python 实现docx与doc文件的互相转换
因文件格式要求,需要将docx与doc文件相互转换,特寻找python代码,与大家共分享
fromwin32comimportclient
#转换doc为docx
defdoc2docx(fn):
word=client.Dispatch("Word.Application")#打开word应用程序
#forfileinfiles:
doc=word.Documents.Open(fn)#打开word文件
doc.SaveAs("{}x".format(fn),12)#另存为后缀为".docx"的文件,其中参数12或16指docx文件
doc.Close()#关闭原来word文件
word.Quit()
#转换docx为doc
defdocx2doc(fn):
word=client.Dispatch("Word.Application")#打开word应用程序
#forfileinfiles:
doc=word.Documents.Open(fn)#打开word文件
doc.SaveAs("{}".format(fn[:-1]),0)#另存为后缀为".docx"的文件,其中参数0指doc
doc.Close()#关闭原来word文件
word.Quit()
docx2doc(u"d:\\python\\1.docx")
如果想转换为其他格式文件,需要在format文件名内修改,并用如下saveas参数
如docx转换为pDf,用如下语句:
doc.SaveAs("{}.pdf".format(fn[:-5]),17)
需要说明的是:
要安装OFFICE,如果是使用金山WPS的,则还不能应用
补充:python批量将文件夹内所有doc转成docx
doc转docx函数
importos
fromwin32comimportclient
defdoc_to_docx(path):
ifos.path.splitext(path)[1]==".doc":
word=client.Dispatch('Word.Application')
doc=word.Documents.Open(path)#目标路径下的文件
doc.SaveAs(os.path.splitext(path)[0]+".docx",16)#转化后路径下的文件
doc.Close()
word.Quit()
path=""#填写文件夹路径
doc_to_docx(path)
获取文件夹下的所有文件的绝对路径
importos deffind_file(path,ext,file_list=[]): dir=os.listdir(path) foriindir: i=os.path.join(path,i) ifos.path.isdir(i): find_file(i,ext,file_list) else: ifext==os.path.splitext(i)[1]: file_list.append(i) returnfile_list dir_path="" ext=".doc" file_list=find_file(dir_path,ext)
源码
importos
fromwin32comimportclient
defdoc_to_docx(path):
ifos.path.splitext(path)[1]==".doc":
word=client.Dispatch('Word.Application')
doc=word.Documents.Open(path)#目标路径下的文件
doc.SaveAs(os.path.splitext(path)[0]+".docx",16)#转化后路径下的文件
doc.Close()
word.Quit()
deffind_file(path,ext,file_list=[]):
dir=os.listdir(path)
foriindir:
i=os.path.join(path,i)
ifos.path.isdir(i):
find_file(i,ext,file_list)
else:
ifext==os.path.splitext(i)[1]:
file_list.append(i)
returnfile_list
dir_path="C:\Users\python"#批量转换文件夹
ext=".doc"
file_list=find_file(dir_path,ext)
forfileinfile_list:
doc_to_docx(file)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。