1、python-pptx模块简介
使用python *** 作PPT,需要使用的模块就是python-pptx,下面来对该模块做一个简单的介绍。这里提前做一个说明:python *** 作PPT,最好是我们提前设计好自己的一套样式,然后利用进行python进行内容的获取和填充(最主要的功能!),最好是不用使用python代码 *** 作PPT的格式,格式的修改肯定不如我们直接在PPT中修改方便。
这里有一点需要注意的是:安装的库是python-pptx,但是导入的时候却有点不同。
在使用python *** 作PPT之前,首先应该清楚PPT的结构,这个对于之后代码的编写很有帮助
结果如下:
结果如下:
结果如下:
5)获取某一页Slide中的内容
结果如下:
这个概念在下面的效果中,会得以体现。其中prs.slide_layouts[]传入0表示获取的是第一个版式,传入1表示获取的是第二个版式,以此类推下去。
效果如下:
② PPT内容的填写
效果如下:
效果如下:
② 段落的添加
效果如下:
③ 给段落设定层级关系
效果如下:
效果如下:
第一种展示:
效果如下:
第二种展示:
效果如下:
结果如下:
上面我们已经知道怎么添加文本框,现在我们需要做的就是,怎么调整文本框的位置。
结果如下:
结果如下:
结果如下:
当然这里还有一些其他样式的调整,和word很类似,就不一一叙述了。
代码如下:
结果如下:
一、实现原理其实实现原理很简单,我们的pptx文件其实是一个压缩包。我们可以直接修改pptx文件的后缀,改成zip然后解压,比如下面这个:
BTH0Q0$4CJH0}2VQP~06KH1.png
这是解压后的文件。我们可以在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)
这里我们就是添加了一个解压目录的创建,这样我们执行的时候就不会因为目录不存在而报错了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)