找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4272

积分

0

好友

552

主题
发表于 半小时前 | 查看: 3| 回复: 0

Word 文档在我们的工作中扮演着重要角色,各种合同、通知、请示等基本都采用 Word 格式。对于单个 Word 文档,我们可以手动读取内容、写入内容以及调整样式。但如果面对成千上万个文档呢?这时就需要借助 Python 编程来实现自动化处理了。

读取 Word 文档中的图片

在 python-docx 模块中,并没有提供获取 Word 文档中图片的方法。如果要提取 Word 文档中的图片,可以使用 Python 标准库自带的 zipfile 模块,直接使用即可,无需额外安装。

这里先介绍 zipfile 模块中几个常用的方法和属性:

  • ZipFile():用于读取或创建一个 zip 文件对象。
  • infolist():用于获取 zip 文档内所有文件的信息,返回由 ZipInfo 对象组成的列表。
  • filename:用于获取文件的名称。
  • extract():将 zip 文档内的指定文件解压到指定目录(或称为“文件夹”)中。

下面这份 Word 文档,里面包含 2 张图片。我们将利用 zipfile 模块提取其中的图片。

Word文档中插入两张图片的示例界面

在交互式环境中输入如下命令:

import os
from zipfile import ZipFile

zip_file = ZipFile("读取图片.docx", "r")
for info in zip_file.infolist():
    print(info.filename)
# 输出:
# [Content_Types].xml
# _rels/.rels
# word/_rels/document.xml.rels
# word/document.xml
# word/footnotes.xml
# word/endnotes.xml
# word/media/image1.png
# word/media/image2.png
# word/theme/theme1.xml
# word/settings.xml
# word/styles.xml
# word/webSettings.xml
# word/fontTable.xml
# docProps/core.xml
# docProps/app.xml

for info in zip_file.infolist():
    file_name = info.filename
    if file_name.endswith((".png", ".jpeg", ".jpg")):
        zip_file.extract(info.filename, os.getcwd())

zipfile列出Word文档内部结构并提取图片的代码

逐步拆解一下这段代码的逻辑。

首先,导入 zipfile 模块中的 ZipFile() 方法(见第 1 行)。调用该方法可以帮助我们创建一个 zip_file 对象(见第 2 行),参数 "r" 表示以读取模式打开文件。

接着,调用该对象的 infolist() 方法,返回的是文件信息对象组成的列表(见第 3 行)。

我们可以利用 for 循环遍历列表中的每个元素,并调用 filename 属性,打印每个具体的文件名(见第 4 行)。

观察上述文件名,图片一般是以 .png 后缀结尾的。此时可以搭配 if 条件语句,如果文件名是以 png、jpeg 或 jpg 结尾的,就证明它是一张图片(见第 5 行)。最后,调用 zip_file 对象的 extract() 方法,将图片提取到当前工作目录下的 word/media 文件夹中(见第 6 行),最终效果如图所示。

从Word文档中提取出的图片文件展示

小贴士

提取 Excel 文档中的图片,也可以使用同样的方法。

看到这里你会发现,所谓的“读取 Word 文档中的图片”,本质上就是把 .docx 文件当作一个 zip 压缩包来处理。Word 从 2007 版本开始采用的 Office Open XML 格式,底层就是一个 ZIP 归档,图片统一存放在 word/media 目录下。理解了这一点,后续无论是提取图片、替换内容还是做文档批量分析,思路都会清晰很多。更多 Python 自动化办公的实战技巧,也欢迎到 云栈社区 一起交流探讨。




上一篇:Python数据可视化:用Matplotlib绘制哑铃点图对比Q1与Q2销售
下一篇:弱模型反向解码强模型推理,OpenAI等API漏洞泄露数百条密钥密码
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-8-14 04:47 , Processed in 0.842086 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表