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

python学习—合并多个word文档

系列文章目录

python学习—合并TXT文本文件
python学习—统计嵌套文件夹内的文件数量并建立索引表格
python学习—查找指定目录下的指定类型文件
python学习—年会不能停,游戏抽签抽奖
python学习—循环语句-控制流
python学习—合并多个Excel工作簿表格文件
python学习—批量复制并重命名文件夹
python学习—详解word邮件合并


文章目录

  • 系列文章目录
  • 功能说明
  • 1 准备工作
  • 2 第一版代码
      • (1) win32com模块
      • (2) 初始化
      • (3) 遍历
      • (4) 保存合并文档
      • (5) 第一版完整代码
  • 3 第二版代码
      • (1) 制作格式化块
      • (2) 插入块
      • (3) 查看运行效果
      • (4) 完善代码
      • (5) 第二版完整代码
  • 4 后记


功能说明

最近有个工作,是某个高速公路的征地项目,涉及高速公路占地的某县下辖的几个乡镇22个村的2000多户村民,每户都要填写一张固定格式的《征地补偿登记表》纸质表,主要记录一些农户基本信息,填写完毕后交给乡镇或村委会指派人员负责转录到固定格式的电子word文档中,再交给我们收集归档。

在收集过程中就出现问题了,发现有些村提交的文档是1个多页文档,每页记录一户村民信息,这种情况我们审核维护就很简单了;然而还有一些村提交的是1户1个文档,如果100户就是100个word文档,这也是可以理解的,毕竟工作量不小有可能是很多人分别录入的。

多人录入就出现了字体不同,字号有差异,个别单元格填写不规范等小问题,既然都交过来,再让他们重新录入也不好,时间也不允许,我审查需要重复打开关闭很是烦人,就想着能否用python编程来实现多个word文档的合并。

首先来看一下《征地补偿登记表》的格式,如下图:

1
从上图可以看到,word文档的主体是一个表格,表格上面有标题行,表格下面有几行内容,整个A4版面布局满满当当,再多一行就会串页了。

根据单页文档的特点,因为单页布局太满,可以预判到合并文档很可能会发生上下串页的问题,可以通过对合并的word文档缩小页边距尝试解决。

本代码目标为:

  • 1 自动读取本地文件夹内多个单页word文档;
  • 2 合并生成1个多页word文档;
  • 3 要求保留原文档的格式不变;
  • 4 串页问题,通过调整页边距解决。
  • 代码运行环境 :python 3.11版本, pycharm 2022.2.5

1 准备工作

我首先准备了15个单页word文档放在同一个目录中,如下图。
2

2 第一版代码

思路是:我第一版思路很简单,就是 打开分户文档——复制内容——粘贴到合并文档。

经过一些失败,反复测试后终于成功实现合并功能。第一版本的代码,主要实现一个合并的操作。

(1) win32com模块

win32com 模块是 Python 中 pywin32 库的一部分,它为 Python 提供了对 Windows 组件对象模型(COM)的访问能力,允许 Python 脚本与支持 COM 接口的 Windows 应用程序进行交互。

win32com 可以让 Python 中自动化操作 Microsoft Office 套件,如 Word、Excel 和 PowerPoint,首先安装模块,从清华大学镜像。

pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simple/

(2) 初始化

首先调用word程序,创建一个word文档作为合并文档。

    # 初始化 Word 应用程序对象word = win32.gencache.EnsureDispatch('Word.Application')# 隐藏 Word 应用程序窗口word.Visible = False# 创建一个新的 Word 文档用于合并merged_doc = word.Documents.Add()# 将分户文档文件夹folder_path路径转换为 Path 对象folder_path = Path(folder_path)

注意: 这里创建的 merged_doc,是一个中间变量,用来保存过程中复制的内容,最终输出的合并文档为output_file

(3) 遍历

思路是:打开分页文档——复制内容——找文档末尾——粘贴内容——插入分页符——关闭分页文档。
遍历所有分页文档。

   # 遍历文件列表,逐个处理for i, file_path in enumerate(file_list, start=1):# 打开当前 Word 文档current_doc = word.Documents.Open(str(file_path))# 复制当前文档的全部内容current_doc.Content.Copy()# 获取合并文档内容的最后一个字符位置end_position = merged_doc.Content.End - 1# 创建文档范围对象,定位到合并文档的末尾paste_range = merged_doc.Range(end_position)# 将剪贴板中的内容粘贴到合并文档的末尾paste_range.Paste()# 如果不是最后一个文件,插入分页符if i < len(file_list):merged_doc.Range(merged_doc.Content.End - 1).InsertBreak(win32.constants.wdPageBreak)# 关闭当前文档,不保存更改current_doc.Close(False)

(4) 保存合并文档

把中间变量 merged_doc 保存为最终的合并文档,输出 output_file

    # 保存合并后的文档到指定路径merged_doc.SaveAs2(output_file)

中间便令使命结束,关闭中间便令,不保存修改。

    # 关闭合并后的文档,不保存更改merged_doc.Close(False)

这是因为在合并过程中,文档的内容已经被保存到指定的输出文件output_file 中(通过merged_doc.SaveAs2(output_file)),因此不需要中间变量 merged_doc 再次保存更改。
使用False可以避免弹出保存提示框,确保程序自动关闭文档而不进行额外的保存操作。

    # 退出 Word 应用程序word.Quit()

调用windows程序,使用后需要关闭word程序。

(5) 第一版完整代码

from pathlib import Path
import win32com.client as win32def merge_word_documents(folder_path, output_file):# 初始化 Word 应用程序对象word = win32.gencache.EnsureDispatch('Word.Application')# 隐藏 Word 应用程序窗口word.Visible = False# 创建一个新的 Word 文档用于合并merged_doc = word.Documents.Add()# 将文件夹路径转换为 Path 对象folder_path = Path(folder_path)# 获取文件夹中所有 .docx 或 .doc 文件,跳过隐藏文件和临时文件file_list = [f for f in folder_path.iterdir()if f.suffix.lower() in ('.docx', '.doc') and not f.name.startswith('.') and not f.name.startswith('~$')]# 遍历文件列表,逐个处理for i, file_path in enumerate(file_list, start=1):# 打开当前 Word 文档current_doc = word.Documents.Open(str(file_path))# 复制当前文档的全部内容current_doc.Content.Copy()# 获取合并文档内容的最后一个字符位置end_position = merged_doc.Content.End - 1# 创建文档范围对象,定位到合并文档的末尾paste_range = merged_doc.Range(end_position)# 将剪贴板中的内容粘贴到合并文档的末尾paste_range.Paste()# 如果不是最后一个文件,插入分页符if i < len(file_list):merged_doc.Range(merged_doc.Content.End - 1).InsertBreak(win32.constants.wdPageBreak)# 关闭当前文档,不保存更改current_doc.Close(False)# 保存合并后的文档到指定路径merged_doc.SaveAs2(output_file)# 关闭合并后的文档,不保存更改merged_doc.Close(False)# 退出 Word 应用程序word.Quit()if __name__ == "__main__":# 指定包含 Word 文档的文件夹路径folderpath = 'E:/test/python3/小程序/分户合并/分户'outputfile = 'E:/test/python3/小程序/分户合并/合并.docx'merge_word_documents(folderpath, outputfile)print('合并完成')

在完整代码中增加的 跳过隐藏文件和临时文件 的语句,因为 打开word文件会产生 ~$开头的 缓存文件,这些缓存文件是隐藏文件。

结果如下图:
4
从结果图中可以看到,确实出现了串页的问题,这是因为每页的结尾添加了分页符导致的。

如果单页word文档不是布局太满的话,代码应该能完美合并。

串页问题可以通过调整页面边距改善,单元格:”权属证明编号“ 内容太长可以删除括号中内容,也能解决串页的问题。

总之,通过简单处理后可以得到完美的合并文档

3 第二版代码

第一版思路是复制粘贴,导致串页,我换个思路,把分页文档作为整体,插入合并文档,是否能解决串页问题呢?

代码的主体应该不用变,只需要把 “复制粘贴的动作” 调整为 “插入的动作” 。

(1) 制作格式化块

将分户文档作为一个整体,将其格式化。

   for i, file_path in enumerate(file_list, start=1):# 打开指定的分户Word文档,选中文档中的所有内容,并将其格式化的文本内容,获取格式化文本current_doc = word.Documents.Open(str(file_path))current_doc.Content.Select()selected_text = word.Selection.Range.FormattedText

current_doc 是遍历循环里的中间变量,存储每个分页word的内容。

找到合并文档变量 merged_doc 的末尾,添加一个分页符,准备插入 做好的格式化块。

        # 将光标移动到文档末尾,以便插入新内容merged_doc.Activate()word.Selection.EndKey(Unit=win32.constants.wdStory)# 在文档之间插入分页符(除了第一个文档)if i > 1:word.Selection.InsertBreak(win32.constants.wdPageBreak)

(2) 插入块

        # 将选中的文本内容插入到合并后的文档中,并关闭当前打开的文档,不保存任何更改word.Selection.Range.FormattedText = selected_textcurrent_doc.Close(False)  # 不保存更改,还原循环内的变量初始化

(3) 查看运行效果

其他代码不变,运行一下看效果,结果跟第一版的效果完全一样,串页的位置都一样。

应该是哪里出问题了?思路不同,为啥最后效果一样呢?经过一番搜索学习,找到一个方法:

PasteSpecial 方法 :是 Microsoft Word 的对象模型中用于粘贴剪贴板内容的一个方法。它允许用户以特定的方式粘贴内容,例如保留源格式、仅粘贴文本或粘贴为图片等,参数DataType主要用于指定粘贴内容的格式和行为。以下是对 DataType 参数的简介:

DataType: 指定粘贴时使用的数据类型,常见的值包括:

  1. win32.constants.wdPasteDefault:使用默认格式粘贴内容(保留源格式)。
  2. win32.constants.wdPasteText:仅粘贴纯文本。
  3. win32.constants.wdPasteRTF:以 RTF 格式粘贴。
  4. win32.constants.wdPasteHTML:以 HTML 格式粘贴。
  5. win32.constants.wdPasteMetafilePicture:以元文件图片格式粘贴。
  6. 在代码中,DataType=win32.constants.wdPasteDefault 表示按照源文档的默认格式进行粘贴,确保合并后的文档样式与源文档一致。

(4) 完善代码

既然是 Paste 粘贴,那么前面一定要有 Copy复制,好像又回到第一版代码去了。修改遍历循环里的代码如下:

        # 打开当前 Word 文档,复制内容current_doc = word.Documents.Open(str(file_path))current_doc.Content.Copy()// 修改了查找文档末尾的方法# 将光标移动到合并文档的末尾merged_doc.Activate()word.Selection.EndKey(Unit=win32.constants.wdStory)# 如果不是第一个文件,插入分页符if i > 1:word.Selection.InsertBreak(win32.constants.wdPageBreak)// 关键语句:使用 PasteSpecial 方法粘贴内容,保留源格式word.Selection.PasteSpecial(DataType=win32.constants.wdPasteDefault)# 关闭当前文档,不保存更改current_doc.Close(False)

(5) 第二版完整代码

from pathlib import Path
import win32com.client as win32def merge_word_documents(folder_path, output_file):# 创建 Word 应用程序对象word = win32.gencache.EnsureDispatch('Word.Application')word.Visible = Falsemerged_doc = word.Documents.Add()folder_path = Path(folder_path)# 跳过隐藏文件和临时文件file_list = [f for f in folder_path.iterdir()if f.suffix.lower() in ('.docx', '.doc') and not f.name.startswith('.') and not f.name.startswith('~$')]for i, file_path in enumerate(file_list, start=1):# 打开当前 Word 文档current_doc = word.Documents.Open(str(file_path))# 复制当前文档的全部内容current_doc.Content.Copy()# 将光标移动到合并文档的末尾merged_doc.Activate()word.Selection.EndKey(Unit=win32.constants.wdStory)# 如果不是第一个文件,插入分页符if i > 1:word.Selection.InsertBreak(win32.constants.wdPageBreak)# 使用 PasteSpecial 方法粘贴内容,保留源格式word.Selection.PasteSpecial(DataType=win32.constants.wdPasteDefault)# 关闭当前文档,不保存更改current_doc.Close(False)merged_doc.SaveAs2(output_file)merged_doc.Close(False)word.Quit()if __name__ == "__main__":folderpath = 'E:/test/python3/小程序/分户合并/分户'outputfile = 'E:/test/python3/小程序/分户合并/合并.docx'merge_word_documents(folderpath, outputfile)print('合并完成')

第二版的运行效果,竟然实现了 插入块的效果 ,就跟CAD文件中的 块 效果一样一样的,每个分页word变成了 合并文档中的一个块,想要编辑这个块,双击进入 块编辑器才能编辑,之后再退出。真是峰回路转,意想不到。

仔细看效果图:
7
可以看到,合并后的文档也不串页了,每个页面也变成了块,官方说法是:这是一个插入的对象,而不是一个组合。如果将其转换为office图形对象,会丢失嵌入的数据或链接的信息。

如果想要编辑这个对象,需要双击进入对象,关闭后又是一个不能随意编辑的块了。这倒是一个防止误修改 的好方法。

也有不好的地方,无法进行查找和替换操作了,因为 所有要素都在对象内部,从合并文档直接查找是找不到的。

4 后记

通过以上代码,可以实现 多个word文档的合并,并且两个版本的合并效果不同,各有优缺点,可以根据需要使用。

需要注意一点,可能是windows系统的问题,也可能是 python的问题,运行合并代码以后,系统会多次调用word程序,导致代码运行结束后word程序并没有完全退出干净,连续运行合并代码会报错。

    self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args),^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.com_error: (-2147418111, '被呼叫方拒绝接收呼叫。', None, None)

解决方法也很简单,退出pycharm程序,关闭所有的word程序,刷新几次桌面,后者多等待几分钟,等系统后台的word程序完全关闭,再运行合并代码就没问题了。

相关文章:

python学习—合并多个word文档

系列文章目录 python学习—合并TXT文本文件 python学习—统计嵌套文件夹内的文件数量并建立索引表格 python学习—查找指定目录下的指定类型文件 python学习—年会不能停&#xff0c;游戏抽签抽奖 python学习—循环语句-控制流 python学习—合并多个Excel工作簿表格文件 pytho…...

01、单片机简介

单片机简介 1、什么是单片机2、STM32F103ZET6介绍2.1、参数的含义2.2、存储器映射 3、外设寄存器介绍 1、什么是单片机 单片机(Single-Chip Microcomputer)是一种微型计算机&#xff0c;是一种集成电路芯片。把具有数据处理能力的中央处理器CPU、随机存储器RAM、闪存flash、多…...

常用UI设计工具及平台概览

在当今快速发展的数字世界中,UI设计平台成为设计师和开发者创建用户界面不可或缺的利器。这些平台不仅支持从简单原型到复杂交互设计的各种需求,而且许多还提供将设计直接转换为代码的功能,极大地提高了开发效率。下面将为您介绍几个主流的UI设计工具及其特点,帮助您根据项…...

考研单词笔记 2025.04.17

associate v联系&#xff0c;联想n同事&#xff0c;伙伴&#xff0c;朋友a副的&#xff0c;准的&#xff0c;非正式的 association n联系&#xff0c;联想&#xff0c;协会&#xff0c;社团&#xff0c;关系&#xff0c;交往 associative a联想的 bond n纽带&#xff0c;联系…...

MySQL常用SQL语句的示例

概述 MySQL 常用 SQL 语句的示例&#xff0c;涵盖数据定义、操作、查询等常见场景 一、数据库操作 创建数据库 CREATE DATABASE mydb;选择数据库 USE mydb;删除数据库 DROP DATABASE mydb;二、表操作 创建表 CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VAR…...

java 多线程之Worker Thread模式(Thread Pool模式)

Worker Thread模式 Worker的意思是工作的人&#xff0c;在Worker Thread模式中&#xff0c;工人线程Worker thread会逐个取回工作并进行处理&#xff0c;当所有工作全部完成后&#xff0c;工人线程会等待新的工作到来。 Worker Thread模式也被成为Background Thread&#xff…...

4月17日星期四今日早报简报微语报早读

4月17日星期四&#xff0c;农历三月二十&#xff0c;早报#微语早读。 1、国家统计局&#xff1a;一季度国内生产总值同比增长5.4%&#xff1b; 2、我国博士后已超40万人&#xff0c;2024年招收人数再创新高&#xff1b; 3、神舟二十号计划近日择机实施发射&#xff0c;船箭组…...

【最新版】芸众商城独立版源码 425+插件 全新后台框架

一.系统介绍 芸众商城系统最新版 已经更新425全插件版&#xff0c;一套系统支持各种新零售、商城、模式&#xff0c;天天美丽链动商城。不要相信那些外面的旧版本。旧版本等于是废品&#xff0c;无法小程序运营的&#xff0c;框架还是旧的&#xff01; 芸众系统最新版 服务器可…...

android liveData observeForever 与 observe对比

LiveData 是一个非常有用的组件,用于在数据变化时通知观察者。LiveData 提供了两种主要的观察方法:observe 和 observeForever。这两种方法在使用场景、生命周期感知以及内存管理等方面有所不同。 一、observe 方法​​ ​​1. 基本介绍​​ ​​生命周期感知​​:observe…...

定制化 Docsify 文档框架实战分享

&#x1f31f; 定制化 Docsify 文档框架实战分享 在构建前端文档平台时&#xff0c;我们希望拥有更友好的用户界面、便捷的搜索、清晰的目录导航以及实用的代码复制功能。借助 Docsify&#xff0c;我实现了以下几个方面的定制优化&#xff0c;分享给大家 &#x1f64c;。 &…...

蓝桥杯题目:二维前缀和

首先分析一下二维数组的差分。s[x2][y2]-s[x1][y1]s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]s[x1-1][y1-1] 因为对于二维数组x2y2-x1y1范围内的值需要通过x2y2减去从x1&#xff0c;y2-1的这段存储的前缀和以及减去x2-1&#xff0c;y1这两部分的前缀和&#xff0c;但是还有一个x1-1&a…...

数字孪生城市技术应用典型实践案例汇编(22个典型案例)(附下载)

近年来&#xff0c;数字孪生技术在我国从战略框架逐步向系统性落地推进&#xff0c;成为推动数字中国建设的重要技术引擎。随着《数字中国建设整体布局规划》《"十四五"数字经济发展规划》《深化智慧城市发展推进城市全域数字化转型的指导意见》等政策的实施&#xf…...

Linux——信号(1)信号的产生

我们在讲进程的多种状态时提到过&#xff0c;一个进程的退出有三种情况&#xff1a;正常退出&#xff0c;结果出错退出&#xff08;代码也执行完了&#xff09;&#xff0c;异常终止退出&#xff08;代码未执行完&#xff09;&#xff0c;其中最后一种退出相当于进程在运行时&a…...

【模型常见评价指标(分类)】

目录 常见指标 其他的评估指标 3.1 BLEU 3.2 ROUGE 3.3 困惑度PPL(perplexity) 常见指标 其他的评估指标 3.1 BLEU BLEU&#xff08;Bilingual Evaluation Understudy&#xff0c;双语评估替补&#xff09;分数是评估一种语言翻译成另一种语言的文本质量的指标。它将“质…...

个人博客系统后端 - 用户信息管理功能实现指南(上)

本文记录了如何实现用获取户信息&#xff0c;用户信息更新&#xff0c;用户头像上传三大基础功能 先上接口实现截图&#xff1a; 一、项目结构概览 先介绍一下 个人博客系统采用了标准的 Spring Boot 项目结构&#xff0c;用户功能相关的文件主要分布在以下几个目录&#xff1a…...

CyberAgentAILab 开源数字人项目TANGO,heygen的开源版来了~

简介 TANGO 是 CyberAgentAILab 开源的一项前沿研究成果&#xff0c;其初衷在于探索高效生成模型在实际应用场景中的表现。项目诞生于 CyberAgent 在整合创意与人工智能的实践中&#xff0c;旨在为数字内容生成、交互和实时渲染等领域提供一个高性能、模块化、可扩展的解决方案…...

高等数学同步测试卷 同济7版 试卷部分 上 做题记录 上册期中同步测试卷 A 卷

上册期中同步测试卷A卷 一、单项选择题(本大题共5小题,每小题3分,总计15 分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分&#xff0c;总计30分) 11. …...

4.16 AT好题选做

文章目录 前言[ARC103D] Distance Sums(确定树的形态,trick)[AGC062B] Split and Insert(区间 d p dp dp)[AGC012E] Camel and Oases(状压&#xff0c;可行性dp转最优性dp)[ARC094D] Normalization(trick&#xff0c;转化)[ARC125F] Tree Degree Subset Sum(结论&#xff0c;a…...

数据库-day06

一、实验名称和性质 分类查询 验证 综合 设计 二、实验目的 1&#xff0e;掌握数据查询的Group by &#xff1b; 2&#xff0e; 掌握聚集函数的使用方法。 三、实验的软硬件环境要求 硬件环境要求&#xff1a; PC机(单机) 使用的软件名称、版本号以及模块&#xff1a; …...

基于Flask的漏洞挖掘知识库系统设计与实现

基于Flask的漏洞挖掘知识库系统设计与实现 一、系统架构设计 1.1 整体架构 本系统采用经典的三层Web架构&#xff0c;通过Mermaid图展示的组件交互流程清晰呈现了以下核心模块&#xff1a; 前端展示层&#xff1a;基于Bootstrap5构建响应式界面业务逻辑层&#xff1a;Flask…...

小白从0学习网站搭建的关键事项和避坑指南

以下是针对小白从零学习网站搭建时需要注意的关键事项和避坑指南&#xff0c;帮助你高效学习、少走弯路&#xff1a; 一、学习路径注意事项 不要跳过基础 误区&#xff1a;直接学习框架&#xff08;如 React、Laravel&#xff09;而忽视 HTML/CSS/JS 基础。 正确做法&#xff…...

OpenAI 推出一对 AI 推理模型 o3 和 o4-mini

OpenAI 于 2025 年 4 月 16 日&#xff08;美国东部时间&#xff09;宣布推出两款全新的 AI 推理模型——o3 与 o4-mini&#xff0c;它们能够在给出最终回答前进行思考与推理。 本文中所有的 ChatGPT 服务&#xff0c;由 ChatShare 镜像站 提供&#xff0c;无需担心网络和地区限…...

知识了解03——怎么解决使用npm包下载慢的问题?

1、为什么使用npm下载包会下载的慢 因为使用npm下载包时&#xff0c;默认使用国外服务器进行下载&#xff0c;此时的网络传输需要经过漫长的海底电缆&#xff0c;因此下载速度会变慢 2、怎么解决&#xff1f;&#xff08;切换镜像源&#xff09; &#xff08;1&#xff09;方…...

【网络】IP层的重要知识

目录 1.IP层的作用 2.主机和节点 3.网络层和数据链路层的关系 4.路由控制 4.1.路由控制的过程 4.2. IP地址与路由控制 4.3.路由控制表的聚合 4.4.静态路由和动态路由 4.5.动态路由的基础 5.数据链路的抽象化 5.1.数据链路不同&#xff0c;MTU则相异 5.2.路径MTU发…...

【随身WIFI】随身WiFi Debian系统优化教程

0.操作前必看 本教程基于Debian系统进行优化&#xff0c;有些操作对随身WiFi来说可能会带来负优化&#xff0c;根据需要选择。 所有操作需要在root用户环境下运行&#xff0c;否则都要加sudo 随身wifi Debian系统&#xff0c;可以去某安的随声WiFi模块自行搜索刷机 点赞&am…...

IPCC指南主要变化(各版本)

1996年IPCC国家温室气体清单指南 背景&#xff1a;是IPCC较早发布的指南之一&#xff0c;为国家温室气体清单编制提供了基础方法。 内容&#xff1a;包括了对温室气体排放源和汇的估算方法&#xff0c;涵盖了能源、工业、农业等多个部门。 2006年IPCC国家温室气体清单指南 背…...

关于Diamond机械手的运动学与动力学的推导

1.关于Diamond机械手 &#xff08;1&#xff09;位置模型推导 逆解&#xff1a;机械末端平台的位置与驱动关节之间的关系。 设p点在xy平面的坐标是&#xff08;x&#xff0c;y&#xff09;T&#xff0c;此时根据向量求解 OP等于向量r等于e向xy轴的向量主动臂长度向xy轴的向量…...

@JsonSerialize注解自定义序列化方式

JsonSerialize注解自定义序列化方式 文章目录 JsonSerialize注解自定义序列化方式**前言****创建自定义序列化器****应用自定义序列化器****测试序列化结果****高级用法&#xff1a;全局注册序列化器****关键点解析****常见问题解决****问题1&#xff1a;序列化结果不符合预期*…...

第二篇:linux之Xshell使用及相关linux操作

第二篇&#xff1a;linux之Xshell使用及相关linux操作 文章目录 第二篇&#xff1a;linux之Xshell使用及相关linux操作一、Xshell使用1、Xshell安装2、Xshell使用 二、Bash Shell介绍与使用1、什么是Bash Shell(壳)&#xff1f;2、Bash Shell能干什么&#xff1f;3、平时如何使…...

qt中关于思源雅黑字体的使用

首先&#xff0c;需要下载一份思源雅黑字体&#xff0c;我放在了下面位置&#xff0c;https://download.csdn.net/download/Littlehero_121/90631851 2、关于qt中的使用操作&#xff0c;如下&#xff1a; //QString path "绝对路径";QString path QCoreApplicatio…...

用 MongoIndexStore 实现对话存档和恢复 实现“多用户、多对话线程”场景(像一个 ChatGPT 对话列表那样)

用LlamaIndex写两个完整实用的案例&#xff01; 实现如何用 MongoIndexStore 实现对话存档和恢复实现“多用户、多对话线程”场景&#xff08;像一个 ChatGPT 对话列表那样&#xff09; ✅ 案例一&#xff1a;使用 MongoIndexStore 实现对话存档 恢复 单用户 单对话线程&am…...

接口测试:实用指南4.0

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…...

2000-2017年各省国有经济煤气生产和供应业固定资产投资数据

2000-2017年各省国有经济煤气生产和供应业固定资产投资数据 1、时间&#xff1a;2000-2017年 2、来源&#xff1a;国家统计局、能源年鉴 3、指标&#xff1a;行政区划代码、城市、年份、国有经济煤气生产和供应业固定资产投资 4、范围&#xff1a;31省 5、指标说明&#x…...

AOP的基本应用案例---统计每个函数的执行时间

1.导入依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2.准备好要计算的SpringBoot的项目(本案例以service的实现类为例) 3.编写AOP的代码: package c…...

前端复习遗忘的知识点

这个是我个人平常学习一些博主的东西&#xff0c;如果侵权请联系我或者让我标上博主平台等信息&#xff0c;谢谢&#xff01; 1&#xff1a;如图涉及知识点jq&#xff1a; 1.获取元素 document.getElementById(""); document.getElementsByClassName(); document.g…...

Unity3d 6(6000.*.*)版本国区下载安装参考

前言 Unity3d 6.是最新的版本&#xff0c;是与来自世界各地的开发者合作构建、测试和优化的成果&#xff0c;现在可以完全投入生产&#xff0c;是我们迄今为止性能最出色、最稳定的 Unity 版本。Unity 6 有许多令人兴奋的新工具和功能&#xff1a;端到端多人游戏工作流程将加速…...

【JavaEE】Maven配置

一、Maven简介 什么是Maven&#xff1f; Maven是一个基于项目对象模型&#xff08;POM&#xff09;构建的自动化工具&#xff0c;主要用于Java项目构建、依赖管理和项目信息管理 我理解的Maven&#xff1a;自动下载和管理“代码零件”&#xff08;比如别人写好的工具包&#x…...

Java排序算法百科全书:原理、实现与实战指南

一、排序算法全景视图 1. 算法分类体系 graph TDA[排序算法] --> B[比较排序]A --> C[非比较排序]B --> B1[基本排序]B1 --> B11[冒泡排序]B1 --> B12[选择排序]B1 --> B13[插入排序]B --> B2[高效排序]B2 --> B21[快速排序]B2 --> B22[归并排序]…...

大模型在教育领域的五大应用

大模型在教育领域的五大应用 随着人工智能技术的迅猛发展&#xff0c;特别是大模型&#xff08;如GPT-3、BERT等&#xff09;的出现&#xff0c;教育领域正迎来一场前所未有的变革。大模型不仅能够处理复杂的自然语言任务&#xff0c;还能够通过深度学习算法理解和生成高质量的…...

Lesson 12 Goodbye and good luck

Lesson 12 Goodbye and good luck 词汇 luck n. 运气&#xff0c;幸运 相关&#xff1a;lucky a. 幸运的    luckily ad. 幸运地    unlucky a. 不幸的 搭配&#xff1a;lucky number 幸运数字    lucky color 幸运色    lucky day 幸运日    lucky dog 幸运儿…...

数据结构-前缀树

一、引言 前缀树又叫字典树&#xff0c;可以快速查找字符串或字符串前缀出现的次数&#xff0c;方便进行前缀匹配、词频统计 二、字典树模型 现有一个字典树&#xff0c;里面有money、mother、salary、salary、say五个单词 其中根节点位置还没有字符&#xff0c;相当于空串&am…...

搭建 vue 项目环境详细步骤

在平常的开发工作中&#xff0c;我们经常需要对项目进行打包&#xff0c;后端项目打包及部署在前面总结过。那么&#xff0c;现在前端基本都是 vue 项目&#xff0c;那么应该如何搭建一个 vue 环境呢&#xff1f;下载一个前端项目应该如何启动呢&#xff1f;今天&#xff0c;我…...

【2025最新版】火鸟门户v8.5系统源码+PC、H5、小程序 +数据化大屏插件

一.介绍 火鸟地方门户系统V8.5源码 系统包含4端&#xff1a; PCH5小程序APP 二.搭建环境 系统环境&#xff1a;CentOS、 运行环境&#xff1a;宝塔 Linux 网站环境&#xff1a;Nginx 1.2.22 MySQL 5.6 PHP-7.4 常见插件&#xff1a;fileinfo &#xff1b; redis 三.测…...

【eNSP实验】OSPF单区域配置

简介 OSPF&#xff08;开放最短路径优先&#xff09;是一种基于链路状态算法的内部网关协议&#xff08;IGP&#xff09;&#xff0c;用于自治系统内部动态路由。其核心机制为&#xff1a;各路由器通过泛洪链路状态通告&#xff08;LSA&#xff09;同步网络拓扑&#xff0c;构…...

e实例性能测评:Intel Xeon Platinum处理器,经济型入门级服务器

阿里云服务器ECS经济型e系列是阿里云面向个人开发者、学生、小微企业&#xff0c;在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器&#xff0c;阿里云百科分享CPU处理器采用Intel Xeon Platinum架构处理器&#xff0c;支持1:1、1:2、1:4多种处理器内存配…...

uniapp APP端 DOM生成图片保存到相册

<template> <view class"container" style"padding-bottom: 30rpx;"> <view class"hdbg pr w100 " style"height: 150rpx;"> <top-bar content分享 Back"Back"></top-b…...

Leetcode刷题 由浅入深之哈希表——242. 有效的字母异位词

目录 &#xff08;一&#xff09;字母异位词的C实现 写法一&#xff08;辅助数组&#xff09; &#xff08;二&#xff09;复杂度分析 时间复杂度 空间复杂度 &#xff08;三&#xff09;总结 【题目链接】242.有效的字母异位词 - 力扣&#xff08;LeetCode&#xff09; …...

Opencv函数及练习题

一、函数整理&#xff1a; 1、cv2.adaptiveThreshold&#xff08;&#xff09; 2、 cv2.split&#xff08;&#xff09; 3、cv2.merge&#xff08;&#xff09; 4、cv2.add&#xff08;&#xff09; 5、cv2.bitwise_and&#xff08;&#xff09; 6、 cv2.inRange&#xff08;&…...

16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天

1 题目地址 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09;349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a;输入&#xff1a;nu…...

计算机视觉——JPEG AI 标准发布了图像压缩新突破与数字图像取证的挑战及应对策略

概述 今年2月&#xff0c;经过多年旨在利用机器学习技术开发一种更小、更易于传输和存储且不损失感知质量的图像编解码器的研究后&#xff0c;JPEG AI国际标准正式发布。 来自JPEG AI官方发布流&#xff0c;峰值信噪比&#xff08;PSNR&#xff09;与JPEG AI的机器学习增强方法…...