当前位置: 首页 > news >正文

Word docx文件重命名为zip文件,解压后直接查看和编辑

一个不知道算不算冷的知识[doge]:

docx格式的文件本质上是一个ZIP文件

当把一个.docx文件重命名为.zip文件并解压后,你会发现里面包含了一些XML文件和媒体文件,它们共同构成了Word文档的内容和格式。

例如,word/document.xml文件包含了Word文档的大部分内容【*全体注意——!这个文件很可爱,熟悉xml结构后能在其中完成Word文档结构、格式相关的几乎所有操作,比用Word软件另存为xml之后得到的xml文件结构清晰很多】,而图片文件则保存在word/media文件夹。

因此可以把.docx文件重命名为.zip文件,解压后直接查看、编辑文档内部结构和内容。对其中文件进行修改后(这一步刚开始坑会比较多,需要一点点耐心和好奇..)重新压缩并重命名为.docx文件,又可以用word正常打开。

编辑.xml文件比较推荐用Notepad++,插件安装XML Tools,打开文件后点Pretty print会自动把xml文件树形展开

下面代码是我改document.xml文件看对word文档影响的时候写的,主要目的是节省体力(¦3[▓▓]

实现功能就是把解压后的文件夹重新压缩打包成docx文件并打开,然后就可以愉快地查看了

如果报错建议先撤回之前对xml文档的操作再看看,因为真的很容易手滑(躺

import zipfile  
import os 
import win32com.client as win32 
import random # 将指定文件夹压缩为ZIP文件  
def zip_folder(folder_path, zip_path):    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:  # 使用'w'模式创建或覆盖ZIP文件,并使用DEFLATED方法压缩  for root, dirs, files in os.walk(folder_path): for file in files:  file_path = os.path.join(root, file)  zipf.write(file_path, file_path[len(folder_path)+1:])  # 定重命名文件,将文件扩展名从.zip更改为.docx  
def re_name(path):  old_name = path new_name = path[:-4]+'.docx'    os.rename(old_name, new_name)  return new_name  folder_path = r"D:\wordTest\1"  # 指定要压缩的文件夹路径,就是你解压docx文档之后获得的那个总文件夹 
m = str(random.random())  # 生成一个随机数【这个地方是我偷懒了一下直接用随机数命名,这样不用担心重复
zip_path = f"D:\wordTest\{m}.zip"  
zip_folder(folder_path, zip_path)  # 压缩文件夹  
new_docx = re_name(zip_path)  # 重命名压缩文件为.docx扩展名  # 创建Word应用程序对象  
word = win32.gencache.EnsureDispatch('Word.Application')  # 确保Word应用程序对象存在,如果不存在则创建  # 打开Word文档  
word.Documents.Open(new_docx)  
word.Visible = True  # 设置Word应用程序窗口为可见

http://www.lryc.cn/news/301100.html

相关文章:

  • SpringBoot中公共字段的自动填充
  • 【天衍系列 03】深入理解Flink的Watermark:实时流处理的时间概念与乱序处理
  • day07.C++类与对象
  • String讲解
  • 人群异常聚集监测系统-聚众行为检测与识别算法---豌豆云
  • 多模态基础---BERT
  • 图表示学习 Graph Representation Learning chapter2 背景知识和传统方法
  • OpenMVG(计算两个球形图像之间的相对姿态、细化重建效果)
  • 【QT+QGIS跨平台编译】之三十四:【Pixman+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 2.17学习总结
  • Unity类银河恶魔城学习记录7-7 P73 Setting sword type源代码
  • 安卓版本与鸿蒙不再兼容,鸿蒙开发工程师招疯抢
  • 《白话C++》第9章 泛型,Page842~844 9.4.2 AutoPtr
  • 服务流控(Sentinel)
  • 点亮代码之灯,程序员的夜与电脑
  • ClickHouse--07--Integration 系列表引擎
  • 前端架构: 脚手架框架之yargs的11种基础核心特性的应用教程
  • MySQL性能调优篇(6)-主从复制的配置与管理
  • Linux第49步_移植ST公司的linux内核第1步_获取linux源码
  • 怎样学习Windows下命令行编写
  • 数据结构第十六天(二叉树层序遍历/广度优先搜索(BFS)/队列使用)
  • 6.s081 学习实验记录(八)Networking
  • 图解贝塞尔曲线生成原理
  • 租房招聘|在线租房和招聘平台|基于Springboot的在线租房和招聘平台设计与实现(源码+数据库+文档)
  • 简单试验:用Excel进行爬虫
  • SQL 精讲-MySql 常用函数,MySQL语句精讲和举例
  • nlp中如何数据增强
  • python:xml.etree,用 xmltodict 转换为json数据,生成jstree所需的文件
  • C#log4net日志保存到Sqlserver数据库表(16)
  • SpringCloud-Nacos集群搭建