因文件格式要求,需要将docx 与doc文件相互转换,特寻找python代码,与大家共分享
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
from win32com import client #转换doc为docx def doc2docx(fn): word = client.Dispatch( "Word.Application" ) # 打开word应用程序 #for file in files: doc = word.Documents. Open (fn) #打开word文件 doc.SaveAs( "{}x" . format (fn), 12 ) #另存为后缀为".docx"的文件,其中参数12或16指docx文件 doc.Close() #关闭原来word文件 word.Quit() #转换docx为doc def docx2doc(fn): word = client.Dispatch( "Word.Application" ) # 打开word应用程序 #for file in files: 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文件名内修改,并用如下save as 参数
如docx转换为pDf,用如下语句:
1
|
doc.SaveAs( "{}.pdf" . format (fn[: - 5 ]), 17 ) |
需要说明的是:
要安装OFFICE,如果是使用金山WPS的,则还不能应用
补充:python批量将文件夹内所有doc转成docx
doc转docx函数
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import os from win32com import client def doc_to_docx(path): if os.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) |
获取文件夹下的所有文件的绝对路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import os def find_file(path, ext, file_list = []): dir = os.listdir(path) for i in dir : i = os.path.join(path, i) if os.path.isdir(i): find_file(i, ext, file_list) else : if ext = = os.path.splitext(i)[ 1 ]: file_list.append(i) return file_list dir_path = "" ext = ".doc" file_list = find_file(dir_path, ext) |
源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import os from win32com import client def doc_to_docx(path): if os.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() def find_file(path, ext, file_list = []): dir = os.listdir(path) for i in dir : i = os.path.join(path, i) if os.path.isdir(i): find_file(i, ext, file_list) else : if ext = = os.path.splitext(i)[ 1 ]: file_list.append(i) return file_list dir_path = "C:\Users\python" #批量转换文件夹 ext = ".doc" file_list = find_file(dir_path, ext) for file in file_list: doc_to_docx( file ) |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/weixin_45903952/article/details/105223595