一、實現(xiàn)原理
其實實現(xiàn)原理很簡單,我們的pptx文件其實是一個壓縮包。我們可以直接修改pptx文件的后綴,改成zip然后解壓,比如下面這個:
這是解壓后的文件。我們可以在ppt目錄下找到一個media目錄,這個目錄下就是我們要的圖片的。這個目錄包含了PPT的所有多媒體文件。
知道這點(diǎn)后,我們就可以選擇用Python來解壓出PPT中的media目錄就可以提取出所有圖片了。
二、提取PPT中的圖片
1、打開壓縮包
在Python中提供了一個zipfile模塊用于處理壓縮包文件。我們來看看它的簡單操作:
1
2
3
4
5
6
7
8
|
from zipfile import ZipFile # 打開壓縮文件 f = ZipFile( "test.pptx" ) # 查看壓縮包所有文件 for file in f.namelist(): print ( file ) # 關(guān)閉壓縮包文件 f.close() |
輸出的部分結(jié)果如下:
1
2
3
4
5
6
7
|
[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、解壓文件
我們還可以通過下面的方式打開壓縮包:
1
2
3
4
|
from zipfile import ZipFile with ZipFile( "test.pptx" ) as f: for file in f.namelist(): print ( file ) |
通過with
語句,就可以不顯示地調(diào)用close方法。下面我們看看解壓操作:
1
2
3
4
5
|
from zipfile import ZipFile with ZipFile( "test.pptx" ) as f: for file in f.namelist(): # 解壓文件 f.extract( file , path = "unzip" ) |
解壓文件的操作通過f.extract
來實現(xiàn),這里傳入了兩個參數(shù),分別是壓縮包文件,和解壓路徑,如果壓縮包有密碼還需要傳入解壓密碼。
然后我們還需要判斷一下,如果是媒體目錄我們才解壓。我們添加一點(diǎn)代碼:
1
2
3
4
5
6
|
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" ) |
這樣我們就實現(xiàn)了PPT圖片的提取。
三、提取PPT中的圖片
我們把上面代碼再完善一下:
1
2
3
4
5
6
7
8
9
10
11
|
import os from zipfile import ZipFile # 解壓目錄 unzip_path = "unzip" # 如果解壓目錄不存在則創(chuàng)建 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) |
這里我們就是添加了一個解壓目錄的創(chuàng)建,這樣我們執(zhí)行的時候就不會因為目錄不存在而報錯了。
另外,其實我們手動解壓然后提取PPT中的圖片也是很方便的,也并不會比程序慢。
到此這篇關(guān)于分步驟教你用python一步步提取PPT中的圖片的文章就介紹到這了,更多相關(guān)python 提取 PPT 圖片內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/ZackSock/article/details/120539753