Python如何批量合并70个doc和docx文件

news2024/11/24 17:00:26

目录

一、问题的提出

二、算法分析

三、代码展示

四、注意事项


有一位朋友发来70多个数名命名的doc和docx文件,问我有没有vba代码,可以把这些文件按照数字大小的顺序合并。我试着用了chatgpt,搞了一串vba代码行不通,于时我就找出了Python,尝试了一下还不错。合并doc,docx文件

二、算法分析

在实现转换前,需要进行文件遍历、格式转化,最终合并到新的文件中。以下是算法步骤

  1. 遍历当前目录文件。 利用os.listdir()来遍历。
  2. 格式转化。用changeOffice这个模块来实现doc和docx的格式批量转化。
  3. 合并docx。用python-docx中的Document来读取,追加到前面的文件。

三、代码展示

经过测式,我编制出以下代码:

from docx import Document
from changeOffice import Change
import os,time
Change(".").doc2docx() #把当前目录下的doc批量转化为docx
time.sleep(3) #设置停顿时间,以防出错
files = sorted([file for file in os.listdir(".") if file.endswith(".docx")],key=lambda x:int(x[:-5])) #文件遍历和排序
doc1 = Document(files[0]) # 读取第一个文档
for file in files[1:]:
    doc = Document(file) # 读取第二个文档 
    for element in doc.element.body:  #拷贝文件中的信息,# 追加第二个文档内容到第一个文档末尾
        doc1.element.body.append(element)
doc1.save('merged_file.docx') # 保存新的合并文件

以上代码优点在于可以保证合并后文件的段落、字体等格式信息不变,而且转换的效率还挺高。大家可以测试一下,有问题随时反馈。

四、注意事项

  1. VBA和Python在办公自动化方面各有优势。Python最大的优势就是可以利用现成的模块,快速地实现想要的功能,不必从零开始,简化了编程过程,而且代码的运行速度快。
  2. 上面代码运行前要保证安装有Python环境,同时python-docx, changeOffice两个包也要用pip安装。程序运行时,所有的文件要保持关闭状态,代码文件要放在所有word文件的目录下。
  3. 这个程序仅适用于合并文件名是数字的word文件,因为这样的文件可以按照顺序合并,其它非数字文件名可以酌情修改代码。
  4. 程序运行前一定要备份原文件,因为changeOffice在进行文件格式转化后会默认删除原文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/614843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PyQt5】(01)PyQt的详细介绍

文章目录 前言一、PyQt的前世今生1.1 PyQt6、PyQt5和PyQt41.2 商业版和开源版1.3 支持的操作系统 二、 PyQt的优点三、PyQt的应用场景总结 前言 PyQt是使用Python语言编写的QT库的界面工具包。QT是一个跨平台的C应用程序开发框架,可以用于创建高性能、高可靠性、图形…

高频面试八股文用法篇(六) 说说反射及其作用

目录 什么是反射? 反射的作用 反射的优缺点 反射的用途 什么是反射? 动态语言。 当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。Java 并不是动态语言,但是它却又一个非常突出的动态相关的机制&am…

Permission denied, please try again.

如果你是容器或者二进制安装启动的gitlab,在克隆代码一直有这样的问题 正克隆到 h5... git192.168.0s password: Permission denied, please try again. 服务ipgit 192.168.40.15 gitlab192.168.40.17 1、 docker run -d --name gitlab -p 80:80 -p 224:22 -p 4…

基于springboot的在线学习平台

源码获取,V:qq2056908377 采用技术 项目整体采用传统的B/S架构和MVC设计模式,开发语言选用JavaHTMLJavascript,技术上采用SpringBoot、Mybatis等开发框架,数据库采用MySQL 5.7。 功能介绍 平台分为用户端和管理两个系…

1.8 基于Java配置方式使用Spring MVC

一、基于Java配置方式使用Spring MVC 实现步骤 1、创建Maven项目 Maven项目 - SpringMvcDemo02 2、添加相关依赖 在pom.xml文件里添加相关依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/…

chatgpt赋能python:如何用Python创建一个成功的项目

如何用Python创建一个成功的项目 无论是初学者还是有经验的开发者&#xff0c;Python语言的丰富生态系统和易于使用的语法使得它在项目开发领域中成为了一种非常流行的选择。但是&#xff0c;要构建一个好的Python项目需要很多工作&#xff0c;需要一些经验和技巧。在这篇文章…

LeetCode_二叉树_BFS_中等_117.填充每个节点的下一个右侧节点指针 II

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; }填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 …

数据共享传输:台式机和笔记本同步文件!

为什么要在台式机和笔记本同步文件&#xff1f; “我想在台式机和笔记本同步文件。因为我工作时使用笔记本&#xff0c;在家里使用安装了Windows 10系统的台式机&#xff0c;我想要在笔记本和台式机之间同步应用程序、游戏、文档等。有没有一种可以在台式机和笔记本同步文件的…

11 【组件通信】

1.props 适用于的场景:父子组件通信 注意事项: 如果父组件给子组件传递数据(函数):本质其实是子组件给父组件传递数据 如果父组件给子组件传递数据(非函数):本质就是父组件给子组件传递数据 书写方式:3种 [‘todos’],{type:Array},{type:Array,default:[]} 特殊情况&am…

为何要将行驶证转为Excel?在线怎么操作?需要注意些什么?

一、为何要将行驶证转为excel表格&#xff1f;有何好处&#xff1f; 将行驶证转为Excel一般是为了方便信息的整理和管理。将行驶证上的信息录入Excel表格中&#xff0c;可以实现快速搜索、排序和筛选等功能&#xff0c;避免了手动整理信息的繁琐和容易出错的问题。此外&#xf…

ChatGPT 时代,程序员的生存之道 | 人工智能 AI

ChatGPT 近期炙手可热&#xff0c;仿佛没有什么问题是它不能解决的。出于对 ChatGPT 的好奇&#xff0c;我们决定探索下它对于前端开发人员来讲&#xff0c;是作为辅助工具多一些&#xff0c;还是主力工具更多一些&#xff1f; 2D 能力测试 我们就挑选一个著名的递归回溯问题—…

MySQL的知识点整理(学习笔记)

目录 一、认识数据库 1. 什么是数据库 2. 数据库类型 3. 常见的数据库管理系统 4. MySQL介绍 5. MySQL的安装&管理工具的安装 6. SQL概述 7. 在DOS系统中操作MySQL 8. MySql常用命令 二、操作数据库 1、使用navicat创建数据库 2、备份和还原数据库 3、MySQL数据…

医疗文本智能标注工具接连落地,景联文科技助力“GPT+健康医疗”稳步前行

随着医疗技术的飞速发展和普及&#xff0c;医疗数据量日益庞大&#xff0c;医疗数据的处理成为了一个极为重要的问题。医疗数据中包含着众多的病历记录、化验报告、影像资料等&#xff0c;这些数据需要专业人员运用专业的知识进行处理。目前&#xff0c;很多医院和相关研究机构…

懒人必备Jetpack MVVM框架

目录 效果图 项目依赖 使用介绍 项目使用的三方库及其简单示例和资料 网络请求相关使用介绍 谷歌Jetpack框架使用介绍 常见问题 github地址 Android Jetpack MVVM框架开发&#xff0c;基于AndroidX开发&#xff0c;傻瓜式使用&#xff0c;适用于所有项目 谷歌 Android…

mathtype7中文版下载安装后如何关联word

随着网络时代的发展&#xff0c;许多数据都需要上传网络。无论是否是数学专业的师生&#xff0c;在平时的学习中常需要输入数学公式。可数学公式中文字部分少&#xff0c;公式中常包含许多特殊符号&#xff0c;虽然通过输入法可以输入某些特殊公式符号&#xff0c;但不完美&…

springboot项目外卖管理 day02-新增员工以及员工信息编辑

文章目录 一、新增员工1.1、需求分析1.2、数据模型1.3、代码开发 二、员工信息分页查询2.1、需求分析 2.2、代码开发2.3、分页插件2.4、员工信息分页查询 三、启用/禁用员工账号3.1、需求分析3.2、代码开发3.3、根据id修改员工信息3.4、代码修复 4、编辑员工信息4.1、功能需求4…

企业级信息系统开发讲课笔记4.6 Spring Boot整合MyBatis

文章目录 零、学习目标一、Spring Boot数据访问概述二、Spring Boot 整合MyBatis&#xff08;一&#xff09;基础环境搭建1、数据准备&#xff08;1&#xff09;创建博客数据库&#xff08;2&#xff09;创建文章表&#xff08;3&#xff09;文章表插入记录&#xff08;4&#…

protobuf 的安装

protobuf 的安装 安装步骤最后的解决办法git clone遇到的问题解决办法: 后续遇到的问题1.果然还是报错了: 2023-06-05更新Abseil的安装2023-06-06更新代码 安装步骤 这个博主的操作对我有效,这个写的好 apt-get install autoconf automake libtool curl make g unzip(成功) g…

【AUTOSAR】Bootloader说明(二)---- 初始化流程及配置

按照DSP复位后的执行情况&#xff0c;Boot-loader分为以下几部分&#xff1a; DSP启动及系统初始化RAM自检应用程序有效性检查UDS命令处理FALSH操作 DSP启动及系统初始化 选择从FLASH启动 DSP的启动模式配置为从FLASH启动【参考】&#xff0c;硬件引脚配置如下&#xff1a; 引…

Vue.js 中的 Nuxt.js 是什么?如何使用 Nuxt.js?

Vue.js 中的 Nuxt.js 是什么&#xff1f;如何使用 Nuxt.js&#xff1f; Nuxt.js 是一个基于 Vue.js 的服务端渲染应用框架&#xff0c;它提供了一种简单的方式来创建基于 Vue.js 的应用程序。Nuxt.js 提供了许多有用的功能&#xff0c;如自动路由、代码分割、服务端渲染等&…