利用python-docx获取docx文档内的图片

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

一、示例代码

	for p in document.paragraphs:
        for image in p._element.xpath('.//pic:pic'):
            for img_id in image.xpath('//a:blip/@r:embed'):
                part=document.part.related_parts[img_id]
                if not isinstance(part,ImagePart):
                    continue
                save_dir=dirname(__file__)
                save_path=join(save_dir,basename(part.partname))
                with open(save_path,"wb")as f:
                    f.write(part.blob)

二、代码逐行解释

1. `for p in document.paragraphs:`
   - 这行代码遍历文档中的所有段落。

2. `for image in p._element.xpath('.//pic:pic'):`
   - 在每个段落中,使用 XPath 表达式查找所有 `<pic:pic>` 元素。这些元素代表段落中的图片。

3. `for img_id in image.xpath('//a:blip/@r:embed'):`
   - 对于每个图片元素,进一步查找 `<a:blip>` 元素的 `r:embed` 属性。`r:embed` 属性通常包含一个 ID,该 ID 用于引用文档中的实际图片数据。

4. `part=document.part.related_parts[img_id]`
   - 使用从 `r:embed` 属性中获取的 ID(`img_id`),从文档的 `related_parts` 中获取对应的图片部分(`ImagePart`)。

5. `if not isinstance(part, ImagePart):`
   - 检查获取的部分是否是 `ImagePart` 类型。如果不是,跳过当前循环。

6. `continue`
   - 如果 `part` 不是 `ImagePart` 类型,则跳过当前图片,继续处理下一个图片。

7. `save_dir=dirname(__file__)`
   - 获取当前脚本文件所在的目录路径,并将其存储在 `save_dir` 变量中。

8. `save_path=join(save_dir,basename(part.partname))`
   - 将图片的文件名(从 `part.partname` 获取)与保存目录路径连接,生成完整的保存路径。

9. `with open(save_path,"wb")as f:`
   - 使用 `with` 语句打开文件,以二进制写入模式(`"wb"`)。这允许你将图片的二进制数据写入文件。

10. `f.write(part.blob)`
    - 将图片的二进制数据(`part.blob`)写入文件。

三、代码总结

- 遍历文档中的每个段落。
- 在每个段落中查找图片元素。
- 获取每个图片的引用 ID。
- 从文档的 `related_parts` 中获取图片数据。
- 检查是否是有效的图片数据。
- 将图片数据保存到文件系统中。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值