分步骤教你用python一步步提取PPT中的图片
作者:ZackSock 时间:2023-07-01 19:58:22
一、实现原理
其实实现原理很简单,我们的pptx文件其实是一个压缩包。我们可以直接修改pptx文件的后缀,改成zip然后解压,比如下面这个:
这是解压后的文件。我们可以在ppt目录下找到一个media目录,这个目录下就是我们要的图片的。这个目录包含了PPT的所有多媒体文件。
知道这点后,我们就可以选择用Python来解压出PPT中的media目录就可以提取出所有图片了。
二、提取PPT中的图片
1、打开压缩包
在Python中提供了一个zipfile模块用于处理压缩包文件。我们来看看它的简单操作:
from zipfile import ZipFile
# 打开压缩文件
f = ZipFile("test.pptx")
# 查看压缩包所有文件
for file in f.namelist():
print(file)
# 关闭压缩包文件
f.close()
输出的部分结果如下:
[Content_Types].xml
_rels/.rels
ppt/presentation.xml
ppt/slides/_rels/slide2.xml.rels
ppt/slides/slide1.xml
ppt/slides/slide2.xml
ppt/slides/slide3.xml
可以看到我们打印出了压缩包的文件。
2、解压文件
我们还可以通过下面的方式打开压缩包:
from zipfile import ZipFile
with ZipFile("test.pptx") as f:
for file in f.namelist():
print(file)
通过with
语句,就可以不显示地调用close方法。下面我们看看解压操作:
from zipfile import ZipFile
with ZipFile("test.pptx") as f:
for file in f.namelist():
# 解压文件
f.extract(file, path="unzip")
解压文件的操作通过f.extract
来实现,这里传入了两个参数,分别是压缩包文件,和解压路径,如果压缩包有密码还需要传入解压密码。
然后我们还需要判断一下,如果是媒体目录我们才解压。我们添加一点代码:
from zipfile import ZipFile
with ZipFile("test.pptx") as f:
for file in f.namelist():
# 如果是media目录下的文件就解压
if file.startswith("ppt/media/"):
f.extract(file, path="unzip")
这样我们就实现了PPT图片的提取。
三、提取PPT中的图片
我们把上面代码再完善一下:
import os
from zipfile import ZipFile
# 解压目录
unzip_path = "unzip"
# 如果解压目录不存在则创建
if not os.path.exists(unzip_path):
os.mkdir(unzip_path)
with ZipFile("test1/test.pptx") as f:
for file in f.namelist():
if file.startswith("ppt/media/"):
f.extract(file, path=unzip_path)
这里我们就是添加了一个解压目录的创建,这样我们执行的时候就不会因为目录不存在而报错了。
另外,其实我们手动解压然后提取PPT中的图片也是很方便的,也并不会比程序慢。
来源:https://blog.csdn.net/ZackSock/article/details/120539753
标签:python,提取,PPT,图片
0
投稿
猜你喜欢
Python实现京东秒杀功能代码
2021-08-14 15:41:27
想学画画?python满足你!
2022-03-28 02:52:30
Python英文文本分词(无空格)模块wordninja的使用实例
2022-05-12 07:10:16
理解 javascript 中的函数表达式与函数声明
2024-04-23 09:08:26
python解析xml文件操作实例
2022-01-02 10:39:13
Python实现朴素贝叶斯的学习与分类过程解析
2023-08-17 15:15:23
sqlserver 不重复的随机数
2024-01-14 00:13:59
webpack结合express实现自动刷新的方法
2024-04-23 09:12:27
关于INDEX SERVER+ASP建立查询引擎的一点心得
2008-03-02 15:56:00
瞬间的设计 I
2009-12-25 18:54:00
MySQL 导入慢的解决方法
2024-01-22 12:08:42
python编程matplotlib交互绘制Julia集示例解析
2021-07-31 17:14:45
浅谈python for循环的巧妙运用(迭代、列表生成式)
2023-04-15 02:17:29
用于分页的两个Asp函数
2007-09-07 10:09:00
SQL“多字段模糊匹配关键字查询”
2008-04-24 14:16:00
python简单的函数定义和用法实例
2022-10-07 12:35:03
浅谈pytorch池化maxpool2D注意事项
2023-07-14 15:02:30
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2024-01-21 07:55:04
解决pycharm无法调用pip安装的包问题
2023-01-25 23:43:16
Javascript typeof 用法
2013-10-20 20:49:40