## 写在前面
写这个的起因是源于帮老师收一次作业,要求拍照,于是就收到的各式各样的格式,图片在一个文档中还能直接取出(将word另存为网页格式,就能看到所有图片),一个班几十号人,每人一个文档,一个文档中就几张图片,真的很难提取,于是就有了这个项目。。。
## 实现思路
以office保存的word文件,修改后缀为zip格式,解压后在word/media下保存了文档中所有的图片,就很容易实现了,修改后缀->取出word/media目录下所有的图片->保存图片即可,
当然你用wps保存的文档是doc,他就不能这么做,要先将doc转为docx(不是直接改后缀名,要修改属性值)
使用的前提是要装了office
## 遇到问题
Python3.x好像都不能安装win32com,py2.7可以,Python3.x可以使用此方法
```shell
pip install pypiwin32
```
多线程处理的时候,报了一个“pywintypes.com_error: (-2147221008, '尚未调用 CoInitialize。', None, None)”的错误,主线程运行的时候就不会,应该就是多个线程共用了一个资源,我们就需要在每一个线程里单独初始化,在csdn里找到解决方案如下
```Python
import pythoncom
```
在打开Word文件语句之前输入
```Python
pythoncom.CoInitialize()
```
即可解决
另外的一个需求是在提取目录下所有Word文档中的图片后,是否需要删除源文档,这就需要每个目录下的文件都由用户输入来决定,可在多线程里面,会将多个线程的等待输入语句一起输出,就不能做到等待用户输入了(我技术不到位,实现不了)
也试过线程锁,以及thread.join(),好像都无法实现,后来找到一个解决方案,通过图形界面的输入框来实现这个需求即可
还有就是打包成可执行文件时,直接打包会将系统环境中的所有库都打包,程序就会很大,可以使用pipenv虚拟环境打包
安装pipenv
```Python
pip install pipenv
```
为当前目录建立虚拟环境
```Python
pipenv install
```
进入虚拟环境(上一步可省略,因为没有虚拟环境的话会自动建立一个)
```Python
pipenv shell
```
安装程序中所用到的额外包(Python自带的库就不用装了,装site-package下面的),以及pyinstaller(Python打包库)即可
## 使用演示
原来的目录

单线程操作

多线程操作

## 写在结尾
那个多线程等待用户输入有知道的小伙伴,麻烦说一下呗
软件下载地址:[下载Word图片提取批处理工具](https://www.lanzous.com/iapl2qj)
源码还没上传GitHub,上传后在更新

Python批量提取多目录下多个word文档中的图片