当前位置: 首页 > 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应用程序窗口为可见

相关文章:

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

一个不知道算不算冷的知识[doge]: docx格式的文件本质上是一个ZIP文件 当把一个.docx文件重命名为.zip文件并解压后,你会发现里面包含了一些XML文件和媒体文件,它们共同构成了Word文档的内容和格式。 例如,word/document.xml文件…...

SpringBoot中公共字段的自动填充

目录 1 前言 2 使用方法 2.1 自定义枚举类 2.2 自定义注解AutoFill 2.3 自定义切面类并设定切入点 2.4 切面类中设置前置通知,对公共字段赋值 2.5 在方法上添加自定义注解 3 最后 1 前言 在我们的项目中,项目表可能会有一些公共的字段需要我们的…...

【天衍系列 03】深入理解Flink的Watermark:实时流处理的时间概念与乱序处理

文章目录 01 基本概念02 工作原理03 优势与劣势04 核心组件05 Watermark 生成器 使用06 应用场景07 注意事项08 案例分析8.1 窗口统计数据不准8.2 水印是如何解决延迟与乱序问题?8.3 详细分析 09 项目实战demo9.1 pom依赖9.2 log4j2.properties配置9.3 Watermark水印…...

day07.C++类与对象

一.类与对象的思想 1.1面向对象的特点 封装、继承、多态 1.2类的概念 创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。由{ }包围,由;结束。 class name{ //类的…...

String讲解

文章目录 String类的重要性常用的方法常用的构造方法String类的比较字符串的查找转化数字转化为字符串字符串转数字 字符串替换字符串的不可变性 字符串拆分字符串截取字符串修改 StringBuilder和StringBuffer String类的重要性 在c/c的学习中我们接触到了字符串,但…...

人群异常聚集监测系统-聚众行为检测与识别算法---豌豆云

聚众识别系统对指定区域进行实时监测,当监测到人群大量聚集、达到设置上限时,立即告警及时疏散。 旅游业作为国民经济战略性支柱产业,随着客流量不断增加,旅游景区和一些旅游城市的管理和服务面临着前所未有的挑战: …...

多模态基础---BERT

1. BERT简介 BERT用于将一个输入的句子转换为word_embedding,本质上是多个Transformer的Encoder堆叠在一起。 其中单个Transformer Encoder结构如下: BERT-Base采用了12个Transformer Encoder。 BERT-large采用了24个Transformer Encoder。 2. BERT的…...

图表示学习 Graph Representation Learning chapter2 背景知识和传统方法

图表示学习 Graph Representation Learning chapter2 背景知识和传统方法 2.1 图统计和核方法2.1.1 节点层次的统计和特征节点的度 节点中心度聚类系数Closed Triangles, Ego Graphs, and Motifs 图层次的特征和图的核节点袋Weisfieler–Lehman核Graphlets和基于路径的方法 邻域…...

OpenMVG(计算两个球形图像之间的相对姿态、细化重建效果)

目录 1 Bundle Adjustment(细化重建效果) 2 计算两个球形图像之间的相对姿态 1 Bundle Adjustment(细化重建效果) 数...

【QT+QGIS跨平台编译】之三十四:【Pixman+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、Pixman介绍二、文件下载三、文件分析四、pro文件五、编译实践一、Pixman介绍 Pixman是一款开源的软件库,提供了高质量的像素级图形处理功能。它主要用于在图形渲染、合成和转换方面进行优化,可以帮助开发人员在应用程序中实现高效的图形处理。 Pixman的主要特…...

2.17学习总结

tarjan 【模板】缩点https://www.luogu.com.cn/problem/P3387 题目描述 给定一个 �n 个点 �m 条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。 允许多次经过一条边或者…...

Unity类银河恶魔城学习记录7-7 P73 Setting sword type源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill_Controller.cs using System.Collections; using System.Col…...

安卓版本与鸿蒙不再兼容,鸿蒙开发工程师招疯抢

最近,互联网大厂纷纷开始急招华为鸿蒙开发工程师。这是一个新的信号。在Android和iOS长期霸占市场的今天,鸿蒙的崛起无疑为整个行业带来了巨大的震动。 2023年11月10日,网易更新了高级/资深Android开发工程师岗位,职位要求参与云音…...

《白话C++》第9章 泛型,Page842~844 9.4.2 AutoPtr

源起: C编程中,最容易出的问题之一,就是内存泄露,而new一个对象,却忘了delete它,则是造成内存泄露的主要原因之一 例子一: void foo() {XXXObject* xo new XXXObject;if(!xo->DoSomethin…...

服务流控(Sentinel)

引入依赖 <!-- 必须的 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency><!-- sentinel 核心库 --> <dependency><groupId>com.ali…...

点亮代码之灯,程序员的夜与电脑

在科技的海洋里&#xff0c;程序员是那些驾驶着代码船只&#xff0c;穿梭于虚拟世界的探险家。他们手中的键盘是航行的舵&#xff0c;而那台始终不愿关闭的电脑&#xff0c;便是他们眼中永不熄灭的灯塔。有人说&#xff0c;程序员不喜欢关电脑&#xff0c;这究竟是为什么呢&…...

ClickHouse--07--Integration 系列表引擎

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Integration 系列表引擎1 HDFS1.1 语法1.2 示例&#xff1a; 2 MySQL2.1 语法2.2 示例&#xff1a; 3 Kafka3.1 语法3.2 示例&#xff1a;3.3 数据持久化方法 Integ…...

前端架构: 脚手架框架之yargs的11种基础核心特性的应用教程

脚手架框架之yargs的基础核心特性与应用 1 &#xff09;概述 yargs 是脚手架当中使用量非常大的一个框架进入它的npm官网: https://www.npmjs.com/package/yargs 目前版本: 17.7.2Weekly Downloads: 71,574,188 (动态数据)最近更新&#xff1a;last month (github)说明这是一个…...

MySQL性能调优篇(6)-主从复制的配置与管理

MySQL数据库主从复制是一种常用的数据复制和高可用性解决方案。它允许将一个MySQL主服务器上的数据自动复制到多个从服务器上&#xff0c;从而提供了数据冗余备份、读写分离等优势。本文将详细介绍MySQL数据库主从复制的配置与管理。 1. 原理概述 MySQL主从复制是基于二进制日…...

Linux第49步_移植ST公司的linux内核第1步_获取linux源码

已知ST公司的linux源码路径&#xff1a; /home/zgq/linux/atk-mp1/stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.31-r0 1、创建“my_linux”目录 打开第1个终端 输入“ls回车” 输入“cd linux/回车”&#xff0c;切换…...

实在Agent实战录:解决委外加工成本核算不准,实现项目利润精准统计的架构演进路径

摘要&#xff1a; 步入2026年&#xff0c;离散制造与复杂供应链体系下的“委外加工”已成为企业调节产能的核心手段&#xff0c;但随之而来的“成本黑盒”与“利润虚标”依然是首席财务官&#xff08;CFO&#xff09;与首席信息官&#xff08;CIO&#xff09;的头号难题。本文由…...

从点击到意图:鸿蒙 App 的 AI 进化

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…...

工业质检落地新思路:拆解SimpleNet如何用‘特征空间加噪’搞定缺陷检测

工业质检革命&#xff1a;SimpleNet如何用特征空间扰动突破小样本缺陷检测瓶颈 在PCB板生产线上&#xff0c;一个肉眼几乎不可见的焊点虚接可能导致整批产品报废&#xff1b;在汽车零部件装配车间&#xff0c;细微的划痕可能引发后续使用中的安全隐患。传统工业质检依赖人工目检…...

SteamAutoCrack终极破解指南:三分钟移除游戏DRM保护

SteamAutoCrack终极破解指南&#xff1a;三分钟移除游戏DRM保护 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack 你是否遇到过Steam游戏无法离线运行的问题&#xff1f;或者想要在没有S…...

告别PCL!用Qt+QGLWidget手把手教你打造自己的3D点云查看器(附完整源码)

轻量级3D点云可视化&#xff1a;基于Qt与OpenGL的高效实现方案 在工业测量、自动驾驶和三维重建等领域&#xff0c;点云数据的可视化一直是开发者面临的挑战。传统方案如PCL虽然功能强大&#xff0c;但其庞大的体积和复杂的依赖链往往让项目变得臃肿。本文将展示如何利用Qt的QG…...

初次使用 Taotoken 模型广场进行模型选型与测试的流程指引

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初次使用 Taotoken 模型广场进行模型选型与测试的流程指引 对于刚接触大模型服务的开发者而言&#xff0c;面对众多厂商和模型&…...

USER.md 渐进式沉淀实战:Hermes Agent 用户画像构建的 4 阶段演进路径

1. USER.md 不是静态配置,而是用户认知的渐进式快照 大多数人第一次打开 USER.md 文件时,会下意识把它当成一个“填空题”:姓名、职位、技术栈、常用工具……填完就提交,以为完成了人格初始化。我试过三次——第一次在内部 PoC 项目里,第二次在客户交付现场,第三次是在给…...

转向现代C++——优先选用限定作用域的枚举型别,而非不限作用域的枚举型别

文章目录优先选用限定作用域的枚举型别&#xff0c;而非不限作用域的枚举型别名字空间污染强类型安全与隐式转换前置声明特例&#xff1a;什么时候不限作用域的 enum 更好&#xff1f;现代 C 的替代方案&#xff08;C17 结构化绑定&#xff09;优先选用限定作用域的枚举型别&am…...

慢时钟域到快时钟域控制信号传递:原理、方案与实战

1. 控制信号跨时钟域传递&#xff1a;一个资深工程师的实战拆解在数字电路设计里&#xff0c;尤其是涉及多时钟域的复杂系统&#xff0c;比如SoC、高速接口或者异构计算单元&#xff0c;控制信号的跨时钟域传递&#xff08;CDC&#xff0c; Clock Domain Crossing&#xff09;绝…...

别再死记硬背了!用Vivado 2022.1和Vitis搭建ZYNQ工程,这份避坑清单帮你省下3小时

ZYNQ开发实战&#xff1a;从Vivado到Vitis的高效避坑指南 当第一次打开Vivado和Vitis的开发者&#xff0c;往往会被复杂的界面和繁琐的配置流程所困扰。本文将以"按键控制LED"这一经典案例为主线&#xff0c;揭示ZYNQ开发中最容易踩中的12个深坑&#xff0c;并提供经…...