python实现——doc与docx互转(终极版)
目录
- 前言
- 代码
- GIF演示
前言
在使用python提取所有word文件中的所有图片中提到过doc与docx互转的方法,但是代码很简单,只支持单个文件,后来优化了一下代码,现在支持某路径下的所有doc与docx互转了。
代码
代码描述:
用来实现doc与docx互转的一个软件
特色:
- 可穿透指定路径下的所有文件,对找到的所有word文档进行操作,并把结果输出到指定路径中
- 直接可以运行,不需要修改任何内容
- 支持3种转换模式
所有doc与docx互转
所有doc转docx
所有docx转doc
注意事项:
- 请确认没有同名文件,否则文件会覆盖,或者使用Everything过滤出word文档之后,再进行互转
- 注意安装相关的库
from win32com import client
import os
'''
代码描述:
用来实现doc与docx互转的一个软件特色:
可穿透指定路径下的所有文件,对找到的所有word文档进行操作
并把结果输出到指定路径中注意事项:
请确认没有同名文件,否则文件会覆盖
'''# 转换doc为docx
def doc2docx(fn):word = client.Dispatch("Word.Application") # 打开word应用程序doc = word.Documents.Open(fn) # 打开word文件a = os.path.split(fn) # 分离路径和文件b = os.path.splitext(a[-1])[0] # 拿到文件名doc.SaveAs("{}\\{}.docx".format(path1, b), 12) # 另存为后缀为".docx"的文件,其中参数12或16指docx文件doc.Close() # 关闭原来word文件word.Quit()# 转换docx为doc
def docx2doc(fn):word = client.Dispatch("Word.Application") # 打开word应用程序doc = word.Documents.Open(fn) # 打开word文件a = os.path.split(fn) # 分离路径和文件b = os.path.splitext(a[-1])[0] # 拿到文件名doc.SaveAs("{}\\{}.doc".format(path1, b), 0) # 另存为后缀为".docx"的文件,其中参数0指docdoc.Close() # 关闭原来word文件word.Quit()# 获取指定路径下的所有word文件
# 可以穿透指定路径下的所有文件
def getfile(path):word_list = [] # 用来存储所有的word文件路径for current_folder, list_folders, files in os.walk(path):for f in files: # 用来遍历所有的文件,只取文件名,不取路径名if f.endswith('doc') or f.endswith('docx'): # 判断word文档word_list.append(current_folder + '\\' + f) # 把路径添加到列表中return word_list # 返回这个word文档的路径# 用户选择的转换模式
def choice():num_list = ['1', '2', '3']a = 1print('请选择转换模式:')while a:print('doc与docx互转请输入:\t1')print('doc转docx请输入:\t2')print('docx转doc请输入:\t3')user_choice = input('我选择:')if user_choice in num_list:a = 0return user_choiceelse:print('请输入正确的选项')if __name__ == '__main__':word_path = input('请给出word文档所在路径:')words = getfile(word_path)# 设置一个路径path1,保存输出结果print("[+] 请输入一个路径,用来存放所有的处理结果")print("[+] 或者按回车键,我将自动把处理之后的文件存放在你的桌面")path1 = input('') # path1 用来存放所有的处理结果if len(path1):passelse:desktop_path = os.path.join(os.path.expanduser("~"), 'Desktop') # 获取桌面路径path1 = os.path.join(desktop_path, '所有的处理结果')os.makedirs(path1)user_choice = choice()print('转换中,请稍等……')if user_choice == '1':for word in words:if word.endswith('doc'):doc2docx(word)else:docx2doc(word)if user_choice == '2':for word in words:if word.endswith('doc'):doc2docx(word)if user_choice == '3':for word in words:if word.endswith('docx'):docx2doc(word)print('转换完毕')
GIF演示
python实现——doc与docx互转(终极版)相关推荐
- python 3 | doc转docx
python 3 | doc转docx 由于python 3 中 python-docx包只能对docx操作. path_original .path_final 为绝对路径,精确到.doc/.doc ...
- python中doc转docx
最近研究怎样doc转docx,并不是单纯的改一下文件后缀,直接改后缀内核还是不一样,不便于python-docx的调用 目录 一.查看doc和docx内核 二.前置条件两个 三.代码 一.查看doc和 ...
- JAVA实现Doc与Docx互转
一.开发须知 Jacob是Java-COMBridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序 ...
- 【Python】python读取doc、docx文件里的表格内容并存入excel中
效果 先展示下基本的效果,首先我们只有一个doc文件,与python的代码: 我这里用的是doc的word文档,文档内表格如下: 通过python读取后打印: 我这里没有专门按照表格内往excel中写 ...
- 关于使用java操作doc与docx互转
1.创建license.xml文件 在项目某位置新建一个license.xml文件,并复制下面内容复制到文件里就可以了. <License><Data><Products ...
- python 读取doc 和 docx
from docx import Document import os from win32com import clientfile_name="D:/BaiduNetdiskDownlo ...
- Ubuntu下使用python读取doc和docx文档的内容
读取docx文档 使用的包是python-docx 1. 安装python-docx包 sudo pip install python-docx 2. 使用python-docx包读取数据 #enco ...
- 别再问我Python打包成exe了!(终极版)
大家好,我是小五 <老板又出难题,气得我写了个自动化软件> 上次这篇文章中,评论区有好几条留言都是关心如何将python脚本打包成10多M的? 那今天小五就给大家全面总结一下:Python ...
- doc与docx批量互转宏代码
由于未找到npoi读取doc的方法,只能用npoi读docx,无奈手里有4000多个doc,要是手动一个一个转为docx,那整个人都要不好了,于是在网上找到两个函数,使用word宏功能实现doc与do ...
最新文章
- 非对称卷积增强CNN特征拟合
- python能写软件吗-python代码能做成软件吗
- [转]符号和运算符参考 (F#)
- YbOJ-网格序列【拉格朗日插值】
- 熊猫数据集_熊猫迈向数据科学的第一步
- 编程加速服务器_英特尔:将可编程加速进行到底
- 阿里矢量图标库的使用方法
- ECharts中国地图篇-名称经纬度调整
- excel服务器 微信设置,微信电脑版excel怎么编辑
- C# 用itextsharp把Html转PDF
- CSS设计模式读书笔记
- debian linux上usb摄像头,[Debian] 安装USB摄像头(芯片ZC0301)驱动
- Android微博平台设计,基于Android平台的微博系统设计与开发
- 多可系统的权限规则详解
- MySQL,Oracle系统学习,以及SQL语言-----数据库篇学习笔记
- Soft NMS+Softer NMS+KL Loss
- 众筹系统源码 java_基于JavaWeb的创意众筹网站系统的设计与实现 毕业论文+任务书+开题报告+外文翻译+设计源码+mysql文件...
- MATLAB-自动控制原理-时域分析
- 郝斌数据结构全套教程高清在线观看和下载-学习数据结构必看
- apache2.4虚拟主机配置