文章目录

  • 一、需求分析
  • 二、系统设计
    • 2.1系统业务流程
    • 2.2系统预览
  • 三、系统开发必备
    • 3.1 系统开发环境
    • 3.2文件组织结构
  • 四、主函数设计
    • 1.创建窗口
    • 2.创建按钮
    • 3.创建输入框
  • 五、函数设计
    • 1.提取.docx文件中的图片(最核心)
    • 2.选择文件
    • 3.文件名判断
    • 4.退出
  • 六、打包成exe可执行文件

一、需求分析

为了满足用户快速从docx文件中提取图片到指定文件夹的需求,该系统应该满足以下功能:

  • 当用户选择docx文件并指定图片输出路径时可以完成对docx文件中所有图片的提取。
  • 当用户选择的文件不是docx文件时应该提醒用户重新选择文件
  • 当用户没有选择图片输出路径时应该提醒用户输入
  • 当用户选择退出可以退出程序

二、系统设计

2.1系统业务流程

图1 系统业务流程

2.2系统预览

图2 系统主界面

图3 图片提取成功

图4 提示用户文件名不正确

三、系统开发必备

3.1 系统开发环境

本系统的软件开发与运行环境具体如下:

  • 操作系统:Windows10
  • Python:Python3.8
  • 开发工具:Pycharm
  • Python内置模块:os、re、tkinter
  • Python第三方模块:docx

3.2文件组织结构

提取.docx中图片的文件结构结构比较简单,只包含一个Python文件。在运行程序时,用户可以自行选择要进行提取的.docx文件和输出图片的文件夹路径。

图5 文件夹组织结构

四、主函数设计

1.创建窗口

window = tk.Tk()
window.title("打工都是人上人!")
window.geometry("400x170")
window.resizable(0,0)#设置窗口不能伸缩变化

2.创建按钮

#选择docx文件按钮
docx_select_button = tk.Button(window, text="选择docx文件", background="green", foreground="white", command=selectPath)
docx_select_button.place(x=280, y=20, height=30, width=100)#选择图片路径文件按钮
pic_select_button = tk.Button(window, text="选择文件夹", background="green", foreground=
"white", command=selectDirectory)
pic_select_button.place(x=280, y=70, height=30, width=100)#提取按钮
extract_button = tk.Button(window, text="提取", background="green", foreground=
"white", command=lambda: printPath(docx_path_input, pic_path_input))
extract_button.place(x=80, y=120, height=30, width=80)#退出按钮
exit_button = tk.Button(window, text="退出", background="green", foreground=
"white", command=lambda: exit(window))
exit_button.place(x=240, y=120, height=30, width=80)

3.创建输入框

#创建docx文件名输入框
docx_path_input = tk.Entry(window, textvariable=docx_path, highlightcolor='red', highlightthickness=1)
docx_path_input.place(x=10, y=20, height=30, width=250)#创建输出图片路径输入框
pic_path_input = tk.Entry(window, textvariable=pic_path, highlightcolor='red', highlightthickness=1)
pic_path_input.place(x=10, y=70, height=30, width=250)

五、函数设计

1.提取.docx文件中的图片(最核心)

def get_pictures(word_path, result_path):"""图片提取:param word_path: word路径:param result_path: 结果路径:return:"""doc = docx.Document(word_path)dict_rel = doc.part._relsfor rel in dict_rel:rel = dict_rel[rel]if "image" in rel.target_ref:if not os.path.exists(result_path):os.makedirs(result_path)img_name = re.findall("/(.*)", rel.target_ref)[0]word_name = os.path.splitext(word_path)[0]if os.sep in word_name:new_name = word_name.split('\\')[-1]else:new_name = word_name.split('/')[-1]img_name = f'{new_name}_{img_name}'with open(f'{result_path}/{img_name}', "wb") as f:f.write(rel.target_part.blob)

2.选择文件

def selectPath():path1 = askopenfilename()docx_path.set(path1)def selectDirectory():path0 = askdirectory()pic_path.set(path0)

3.文件名判断

def printPath(e1, e2):import win32apiimport win32condocxPath = e1.get()picPath = e2.get()if docxPath[-5:] == ".docx" and picPath != "":get_pictures(docxPath, picPath)win32api.MessageBox(0, "提取成功!", "提醒", win32con.MB_OK)elif docxPath[-5:] != ".docx":win32api.MessageBox(0, "请选择文件后缀名为.docx的文件!", "提醒", win32con.MB_RETRYCANCEL)elif picPath == "":win32api.MessageBox(0, "输出文件夹不能为空!", "提醒", win32con.MB_RETRYCANC

4.退出

def exit(e1):e1.destroy()

六、打包成exe可执行文件

Python项目编写完成后,可以将其打包成一个exe可执行文件,这样就可以在其他没有安装Python环境的计算机上运行。

实现打包.exe文件可执行文件需要使用pyinstaller模块,这个模块为第三方模块,需要单独安装。PyInstaller模块支持多种操作系统。但是该模块不支持跨平台操作。

  1. 通过CMD打开“命令提示符”窗口,在光标位置输入:pyinstaller+F+(要打包的.py文件的绝对路径)

图6 生成.exe可执行文件的执行过程

  1. 按下“Enter"键,将自动生成.exe可执行文件
  2. 在.exe文件路径下打开找到该文件,双击该文件即可运行项目。

喜欢别忘记点赞加关注呀!

【Python项目实战】提取.docx文件中的图片并保存到指定的文件夹相关推荐

  1. matlab遍历文件夹中的图片并保存在指定的文件夹中

    以color transfer为例 源图片: 参考图片: 结果图片: 循环遍历文件夹的代码(参考): image_dir = 'C:\Users\Desktop\reinhard_color_tran ...

  2. android相机保存文件为空,相机不保存到指定的文件位置android

    我已经看到了Android和/或硬件的某些版本不尊重MediaStore.EXTRA_OUTPUT标志.我有这样的评论+解决方案在我的代码: /* * HTC Eris and possibly ot ...

  3. Python脚本工具,PyMuPDF批量提取PDF文件中的图片

    如何批量快速提取出PDF中的图片文件,你是否遇到这样的一个问题,尤其是PPT文件转换为PDF文件,需要快速提取其中的图片文件,如果你恰好会那么一点py,同时复制粘贴没问题的话,那么相信你也能够很轻松的 ...

  4. PDF文件中的图片如何删除?分享两种删除方法

    我们怎么把PDF文件中的图片给删除掉呢?大家在日常使用PDF文件的过程中,难免会对文件有编辑需求,有时候需要编辑文字,有时候需要对文件中的图片进行删除处理.遇到这种只需要删除PDF文件里的图片的时候, ...

  5. Python提取Word文件中的目录标题保存为Excel文件

    from docx import Document from openpyxl import Workbook from openpyxl.styles import Alignment, Borde ...

  6. Python工具源码,Python批量提取PPT文件中的图片

    在办公场景当中,同样也有这样一个需求,那就是快速批量把PPT文件中的图片提取出来,毕竟一个个点击另存为太过于繁琐,以及耗费时间,前面本渣渣分享过如何应用Python批量提取PDF文件中的图片,而这一篇 ...

  7. Python 爬虫实战:分析豆瓣中最新电影的影评

    Python 爬虫实战:分析豆瓣中最新电影的影评 接触python时间不久,做些小项目来练练手.前几天看了<战狼2>,发现它在最新上映的电影里面是排行第一的,如下图所示.准备把豆瓣上对它的 ...

  8. Python项目实战 —— 04. 淘宝用户行为分析

    Python项目实战 Python项目实战--目录 Python项目实战 -- 04. 淘宝用户行为分析 一.背景 二.解题思路 三.数据分析 3.1 数据清洗 3.2 数据分析 3.2.1 用户整体 ...

  9. Python项目实战:数据可视化与股票数据分析-关东升-专题视频课程

    Python项目实战:数据可视化与股票数据分析-333人已学习 课程介绍         本视频内容包括使用Matplotlib绘制图表.MySQL数据库.Python访问数据库和Lambda表达式. ...

最新文章

  1. 这就是我为什么推荐使用var aa = for (var i = 0, l = aa.length; i < l; i++) {var a = aa[i];}循环的原因,每秒最快可以执行4000+次!
  2. 年薪75万的真实技术面试实践攻略(篇章二)
  3. let 和 var 区别
  4. 解析没有id的html,网络爬虫干货,还在用正则匹配html?专业的解析组件了解一下...
  5. Amazon EMR(Elastic MapReduce):亚马逊Hadoop托管服务运行架构Hadoop云服务之战:微软vs.亚马逊...
  6. 匿名内部类的使用总结
  7. 安装 | CCS5.5安装包与licence以及安装教程
  8. 学报格式和论文格式一样吗_学报投稿格式有哪些
  9. 前端学习(2003)vue之电商管理系统电商系统之之允许三级选择
  10. LwIP应用开发笔记之四:LwIP无操作系统TFTP服务器
  11. Linux键盘连续输入,关于修改键盘输入
  12. 硬笔行书字帖3500常用字_练字的字帖怎么选择?(硬笔)
  13. 线性代数及其matlab应用课后题答案,线性代数课后习题答案全)习题详解.docx
  14. openlayers4加载百度地图、百度影像图、谷歌地图、谷歌影像图
  15. python语言画四叶草的程序_python绘图四叶草_后端开发
  16. excel 一键给公司所有员工发送工资单 vba代码
  17. pod init 报错 can‘t modify frozen String (FrozenError) [Xcodeproj] Unknown object version (56).
  18. 如何将自己word转换成mobi
  19. 糖豆大小的真无线耳机,续航还挺长,Jeet Air 2体验
  20. 东芝TC358775XBG转换芯片:MIPI转LVDS(单/双路),替代ICN6202芯片

热门文章

  1. 1057. 数零壹(20)
  2. [PHP] 超全局变量$_FILES上传文件
  3. 使用Denyhost来阻止恶意连接SSH的IP
  4. Python OpenCV学习笔记之:使用Grabcut算法进行图像背景和前景分割
  5. 实例:如何设计一款好的Metro UI应用
  6. Vista下的五笔输入法
  7. 存储Image到XML、显示Image
  8. android 画布旋转,Android-在安卓开发中,如何实现一个简单的图片旋转
  9. 在网页中显示数字时钟
  10. Apache Sentry 初识