>>> from env_helper import info; info()
页面更新时间: 2024-03-05 16:30:35
运行环境:
Linux发行版本: Debian GNU/Linux 12 (bookworm)
操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36
Python版本: 3.11.2
2.8. 实例:合并 DOCX 文件¶
合并文件是经常会遇到的需求。对于 Word 文件(DOCX格式),使用软件操作需要进行复制、粘贴, 说起来虽然简单,但是遇到大文件时,可能会出现无响应的问题。 尤其是文件多了之后,重复的操作也会非常无聊且易出错。
通过 python-docx 模块可以读取并写出 docx 格式的文档, 理论上可以用来使用 DOCX 文件。 但是实际使用时可能会遇到各种问题,经常导致生成的结果无法打开。
这个实例内需要使用另一个库 docxcompose
来完成演示。
2.8.1. 解决办法¶
使用第三方库,将多个word文档合并为一个,并且格式不发生变化。
我们利用Python的docxcompose库,这是一个用于组合 Microsoft Word(.docx)文件的第三方库,使用起来非常方便。
要安装docxcompose,可以克隆存储库,可以也使用pip进行安装:
pip install docxcompose
在 Debian 12 中,可以使用下面命令安装:
sudo apt install python3-docxcompose/
2.8.2. 处理步骤¶
先导入相关库 :
>>> from pathlib import Path
>>> from docxcompose.composer import Composer
>>> from docx import Document
获取我们要处理的word文档,放在一个列表内。
>>> result=[]
>>> # for uu in Path('./old').rglob('*.docx'):
>>> for uu in Path('./to_merge').rglob('*.docx'):
>>> result.append(uu.resolve())
>>> print(result)
[PosixPath('/home/bk/book-jubook/python/jubook_python/pt05_tool/ch02_docx/to_merge/防灾减灾知识服务-技术报告-平台部分0305v1.docx'), PosixPath('/home/bk/book-jubook/python/jubook_python/pt05_tool/ch02_docx/to_merge/防灾减灾知识服务系统书稿20210615v1-ch06-0305.docx')]
创建composer对象,准备合并。
>>> filename_master=result[0]
>>> files_list=result
>>>
>>> number_of_sections=len(files_list)
>>> master = Document(filename_master)
>>> composer = Composer(master)
在文档的末尾我们要加上一个分页符,如果不加,可能排版的格式会发生混乱。这样就可以避免,再合并文档后可以将文档转化为PDF格式。
>>> for i in range(1, number_of_sections):
>>> doc_temp = Document(files_list[i])
>>> doc_temp.add_page_break()
>>> composer.append(doc_temp)
>>> composer.save("xx_merged.docx")
2.8.3. 总结¶
使用 Python 进行合并是非常简单的,在word软件里也提供了合并的功能,但是没有使用 Python 这么方便快捷。