1 简介:

如何提取出word文件中的图片,并且保存在自己定义的目录下,是本篇需要介绍的内容。

可以利用word文档的压缩属性来实现,这是因为,word文档本质上也是一个压缩文档。我们解压开之后,遍历所有的目录,将图片文件copy出来即可。

2 使用unzip命令来获取图片

使用unzip命令来解压一个zip文件,再找出图片文件。

使用方式:

在命令行:

unzip xxxxx.zip -d res //将zip文件减压到res目录下

例子1: 下图是一个直接用unzip命令实际的例子:

说明:

可见,在解压后的media目录下,可以看到图片文件。使用unzip命令,解压出来的目录中,图片文件的目录位置是在:

zip/word/media/目录下

当然,你可以写一个简单的python执行脚本,将unzip命令进行一个包装,这里从略。

3 利用python提供的zip库来实现图片的获取:

核心原理:

使用zipfile库来实现。

例子2: 利用python提供的zip库来实现图片的获取:

思路:

1)python库zipfile可以用来解压zip文件, .doc本质上也是自拍文件,所以可以被正常解压;

2)解压后的图片文件目录在当下目录的子目录word/media目录下;

3)找到文件后,可以将文件copy到自己指定的目录下。

代码如下:

# -*- coding: utf-8 -*-
import os
import sys
import re
import time
import docx
import shutil
import zipfile#提取word文件中的图片
def fetch_image_by_unzip(doc_path, desc_path):tmp_path = f'{os.path.splitext(doc_path)[0]}'# 拷贝源文件后重命名再解压splitext = os.path.splitext(doc_path)zip_path = shutil.copy(doc_path, f'{splitext[0]}_new{splitext[1]}')with zipfile.ZipFile(zip_path, 'r') as f:for file in f.namelist():f.extract(file, tmp_path)os.remove(zip_path)# 注:word图片在zip文件内的word/media目录下pic_path = os.path.join(tmp_path, 'word/media')if not os.path.exists(pic_path):shutil.rmtree(tmp_path)return '没有找到图片'pictures = os.listdir(pic_path)if not os.path.exists(desc_path):os.makedirs(desc_path)for picture in pictures:# 根据word的文件名生成图片的名称word_name = os.path.splitext(doc_path)[0]if os.sep in word_name:new_name = word_name.split('\\')[-1]else:new_name = word_name.split('/')[-1]picture_name = f'{new_name}_{picture}'shutil.copy(os.path.join(pic_path, picture), os.path.join(desc_path, picture_name))shutil.rmtree(tmp_path)return (os.path.join(desc_path, pic) for pic in os.listdir(desc_path))#创建目录
def create_dir(desc_path):if not os.path.exists(desc_path):os.makedirs(desc_path)def get_image_by_unzip():doc_name = "念奴娇_赤壁怀古.docx"desc_path = sys.argv[1] #目标文件目录pwd = os.path.dirname(os.path.abspath(desc_path))print("[get_image]desc_path",desc_path)desc_path = os.path.join(pwd, desc_path) #目标路径fetch_image_by_unzip(doc_name,desc_path)if __name__ == '__main__':#create_doc()#fetch_doc()#update_doc()#create_doc_table()#fetch_doc_table()#modify_doc_table()get_image_by_unzip()

说明:

1)fetch_image_by_unzip,核心函数,功能是提取word文件中的图片;

2)zipfile.ZipFile:创建一个zipFile对象;

3)f.extract(file, tmp_path):解压;

4)遍历解压后的文件,找到word/media目录;

pic_path = os.path.join(tmp_path, 'word/media')

5)遍历word/media目录,找出图片文件;

6)将图片文件copy到目标文件夹下:

shutil.copy(os.path.join(pic_path, picture), os.path.join(desc_path, picture_name))

运行结果:

可见,运行完成后,我们已经将图片文件copy到了自定义的zip_img文件夹中。


Python3-word文档操作(七):提取word文档中的图片方式一-利用word文档的压缩文件属性相关推荐

  1. Python3-word文档操作(八):提取word文档中的图片方式一-利用docx库

    1. 简介: 要获取word文档中的图片文件.思路就是先解压,再查找.python中,下面两个库都可以实现这个功能: (1)zip库 (2)docx库 zip库: 上一篇博文已经提过,word本质上也 ...

  2. python读取word内容写入excel_“python循环写入excel“Word文档的内容提取到excel表格中...

    Excel表格内容自动填充到word中的指定位置 使用粘贴链接.在Excel中复制需要进入Word文档中的数据内容,然后在Word文档中,点击选择性粘贴,然后点选粘贴为链接. 如何将EXCEL的文字复 ...

  3. 视频剪辑 教你同时操作提取多个视频中的图片 随机抽出某一帧保存

    很多朋友不知道怎么操作同时提取多个视频中的图片,认为操作会很复杂,其实很简单,按照小编分享的这个方法,就可以实现多个视频批量操作完成图片的提取并保存,感兴趣的朋友接着往下看吧! 第一步,运行媒体梦工厂 ...

  4. java提取word中的图片_Java怎么获取Word批注的文字和图片

    Java怎么获取Word批注的文字和图片 发布时间:2020-06-23 11:07:08 来源:亿速云 阅读:119 作者:Leah 这篇文章将为大家详细讲解有关Java获取Word批注的文字和图片 ...

  5. 如何在Word中自由移动图片?在 Microsoft Word 中自由移动图片的方法!

    想要在Word中自由移动图片吗?在默认情况下,Microsoft Word文档中的图片是不能自由移动图片的,使用下面的方法,您可以在 Word 文档中的任意位置移动图片.如果需要,您甚至可以将图片放在 ...

  6. 使用七牛云存储在网站中进行图片外链

    在CSDN中写博客,如果想在文章中插入一张图片,其实是非常简单的,只要从你本机进行图片选择,然后选择上传,图片就会上传到CSDN的服务器,到时候在文章显示的时候就会读取该图片.但是如果是在自己的搭建的 ...

  7. 提取ROS .bag文件中的图片

    一.查看.bag文件内部信息 rosbag info *.bag 二.根据信息创建.launch文件 ` <launch><node pkg="rosbag" t ...

  8. Python3-word文档操作(九):给word文档添加/删除一张图片-利用docx库

    1 简介: 在前面几篇博文中已经展示了python的docx库的相关用法,本篇继续学习docx的相关内容. docx库不仅可以提取word文档中的图片,也可以给文档添加/删除图片.本篇介绍如何添加/删 ...

  9. java access ole word,利用OLE对象实现Word文档操作

    Word 是常用的字处理软件,在编程中充分利用现有的Word 文档就可以减少很多数据的处理.详细介绍了在ASP.NET 的程序中,利用数据库中的OLE 对象,实现Word文档的在线存取及预览. 1.引 ...

  10. 怎么把图片文字转换成word文档?介绍一个方法

    怎么把图片文字转换成word文档?这类问题在我们整理查找资料时最常见,因为很多信息都以图片形式展示了出来,我们在归纳时如果将其转换成文字在转成Word,就更易于日后编辑查看.而今天跟大家分享的是直接将 ...

最新文章

  1. Aria2打造属于自己的下载神器
  2. JAVA学习笔记--4.多线程编程 part5.这些年的那些坑
  3. RuntimeError: Found dtype Double but expected Float”
  4. 关于条件运算符 ?:的小程序
  5. IDE-Android Studio -FAQ-使用习惯(不断更新 欢迎留言)
  6. oracle消除重复的行使用的什么函数,利用Oracle的row_number() over函数消除重复的记录...
  7. CMMI for Development读书笔记-目录
  8. Oracle数据库备份报错12514,Oracle数据库备份导出时,出错:ORA-12514
  9. SAP UI5 DatePicker setDateValue(tempString)
  10. C# 进程Process基本的操作说明
  11. java 生成验证码
  12. Android studio安装及常见问题
  13. Jeecg-Boot 快速开发平台,前后端分离—开发环境搭建
  14. linux下的C语言开发(ATT 汇编语言)
  15. Kubernetes 之资源管理
  16. 虚拟试衣软件的实现方式
  17. 看不到可用网络,网络适配器出现黄色感叹号(代码56)
  18. 《经济学通识》六、生命有限
  19. 水星MW300R V6(MT7620)CPU引脚图
  20. arXiv2022-12 | FLIP:Scaling Language-Image Pre-training via Masking

热门文章

  1. html5视频自动轮播,HTML5教程 可自动轮播的旋转木马插件
  2. attention权重解读
  3. 那天柠檬果第一次成熟,真像是几经磨难摘来的“仙人果”。
  4. 计算长方体、四棱锥的表面积和体积 SDUT 3337
  5. Android APP如何获取framework下的资源?
  6. 在html中做框架的页面,网页中的框架(详解)
  7. 解决微信、QQ在一加手机系统中无法限制后台的问题
  8. 0723电话面试整理
  9. 爬取中国地震台网以及地震科学数据
  10. 《焦虑心理学》——综述篇