1. 程式人生 > >python win32com批量匯出.ppt/.pptx檔案所有圖片

python win32com批量匯出.ppt/.pptx檔案所有圖片

環境:py2.7
要求:

1、先pip安裝pywin32

pip install pywin32

2、這份程式碼最好和你的PPT檔案放在同一目錄下,且目錄不能有中文名。如果要放在別的地方看程式碼註釋,效果圖如下,圖中資料夾是最後生成的,這裡還沒弄完。此外PPT放在一個目錄下,和程式碼同級:
效果圖

參考連結

ppt_to_jpg()這個函式網上已經有了,參考連結一,這裡只是註釋和處理了下新存入目錄。批量匯出PPT所有圖片,程式碼如下:

# -*- coding: utf-8 -*-
import os
import win32com
import win32com.client

# 儲存PPT為JPG格式的型別,所對應的數值
ppSaveAsJPG = 17 def ppt_to_jpg(ppt_file_name,output_dir_name): '''將PPT另存為JPG格式 arguments: ppt_file_name: 要轉換的ppt檔案的完整路徑檔名,eg:F:\\test\\ppt_name.ppt output_dir_name:轉換後的存放JPG檔案的目錄,以PPT的名字新建的目錄,eg:F:\\test\\ppt_name ''' # 啟動PPT ppt_app = win32com.client.Dispatch('PowerPoint.Application'
) # 設定為0表示後臺執行,不顯示,1則顯示 ppt_app.Visible = 1 # 開啟PPT檔案 ppt = ppt_app.Presentations.Open(ppt_file_name) # 另存為,第一個引數為報存圖片的目錄,第二個是報存的格式。 ppt.SaveAs(output_dir_name, ppSaveAsJPG) # 退出PPT ppt_app.Quit() if __name__ == '__main__': # 當前檔案所在目錄,eg: F:\\test,如果你要指定某個目錄,則手動指定current_dir 即可
current_dir = os.sys.path[0] # 當前目錄下所有檔案,遍歷的結果是檔名。 dir_list = os.listdir(current_dir) # 當前目錄下所有的PPT檔案,eg: ppt_name.ppt ppt_file_names = (fns for fns in dir_list if fns.endswith(('.ppt','.pptx'))) # 當前目錄下所有的PPT檔名,這兩者的區別在於有無後綴名,eg: ppt_name # splitext的作用是,'xx.jpg',會分成'xx'和'.jpg' ppt_names = (os.path.splitext(fns)[0] for fns in dir_list if fns.endswith(('.ppt','.pptx'))) # 因為只需要檔名,這樣也行 # ppt_names = (fns.split('.')[0] for fns in ppt_file_names) for ppt_file_name,ppt_name in zip(ppt_file_names,ppt_names): # 該PPT的完整路徑檔名,eg: F:\\test\\ppt_name.ppt ppt_file_name = os.path.join(current_dir,ppt_file_name) # 需要新建一個與PPT同名的檔案,獲取完整路徑,eg: F:\\test\\ppt_name ppt_dir_path = os.path.join(current_dir,ppt_name) # 建立新目錄 os.mkdir(ppt_dir_path) # print ppt_file_name, ppt_dir_path ppt_to_jpg(ppt_file_name,ppt_dir_path)

以上程式碼該註釋的都註釋了,這裡有一個重點:ppSaveAsJPG 這個常量是什麼?

  1. 最開始我看的連結一,該位置是個17,也只有數字,沒有解釋。我不太懂什麼意思,我以為是數量,但是誰知道一個PPT裡有多少圖片,不該是個常量啊。

  2. 然後搜SaveAs的引數,又看到連結二
    SaveAs引數
    這段程式碼的意思是,SaveAs的第一個引數指定檔名,第二個引數指定格式。但當時我也沒仔細看引數名,而且後來也確實找不到裡面具體有哪些引數。

  3. 然後翻到連結三,裡面有一張圖:
    PpSaveAsFileType,檔案儲存的格式對應的數值

可以看到紅色方框裡和第一條連結所看到的17一樣,就是儲存格式型別。

你可以在SaveAs的第二個引數直接填17,也可以給它指定為一個常量,比較明瞭,如ppSaveAsJPG = 17

未解決:
還有一種就是參考連結二:

在這之前,先講下匯入的問題,一開始我是這麼寫的:

import win32com
win32.client.constants

然後報錯:
這裡寫圖片描述
甚至這也不行:
這裡寫圖片描述

只匯入win32com根本不能呼叫到client和constants,解決方法是,使用前先匯入win32com.client,有兩種方法:

# 方法一:直接使用
from win32com.client import constants 
# 方法二:匯入win32com.client
import win32com.client 
# win32com裡的所有常量
wc = win32com.client.constants

但是我在ipython裡打印不出來,只是返回一個:

<win32com.client.Constants instance at 0x00000000046E0148>

翻遍了程式碼和win32com的原始碼,除了前面那個從win下手的PpSaveAsFileType,目前還沒找到解決辦法在python下如何檢視,先參考前面的圖片即可。如有大佬解決,煩請在評論留下解決方案,感激不盡。

相關推薦

python win32com批量匯出.ppt/.pptx檔案所有圖片

環境:py2.7 要求: 1、先pip安裝pywin32 pip install pywin32 2、這份程式碼最好和你的PPT檔案放在同一目錄下,且目錄不能有中文名。如果要放在別的地方看程式碼註釋,效果圖如下,圖中資料夾是最後生成的,這裡還沒弄完。

python實現批量刪除某個路徑下所有的某種檔案

引言:下面是以前寫的批量刪除某資料夾及其子資料夾下的.pyc檔案,可參照下實現批量刪除別的型別的檔案。用的是python2.7 #coding=utf-8 import os def r

python】儲存某個資料夾下所有圖片名字到一個txt檔案

用python實現讀取某一資料夾下的所有圖片名字到一個txt檔案 import os dir1='/data/Datasets/JPEGImages'#圖片檔案存放地址 txt1 = '/data/Datasets/picture.txt'#圖片檔名存放txt檔案地址 f1 = open

centos下ppt(pptx)檔案轉換為pdf檔案,用PHP顯示內容

1、搭建jdk環境,這裡不詳細介紹。 2、安裝OpenOffice    OpenOffice下載地址http://softlayer-dal.dl.sourceforge.net/project/openofficeorg.mirror/4.0.0/binaries/zh-CN/Apache_OpenOff

Office系列(2)---提取Office檔案(Word、PPT)中的所有圖片

回顧一下上文結尾的問題:如何給文件設定一個合適的封面圖?其中一個解決方案就是,獲取Office檔案內部的圖片作為封面。這裡就詳細介紹下獲取圖片的幾種方式,以及他們各自的優缺點。 PS:因為之前用VSTO開發過PPT的外掛程式,所以對PPT的COM ApI比較熟悉,所以下面的樣例和程式碼都以操作PPT文件為主,

[8]個人學習python:爬取豆瓣首頁所有圖片

程式碼如下:# -*- coding: utf-8 -* import urllib.request,socket,re,sys,os savepath=r'C:\\Users\\Administrator\\PycharmProjects\\untitled\\venv1\

python 批量匯出專案所依賴的所有檔案及安裝的方法(包匯出與匯入)

在Python中我們在專案中會用到各種庫,自帶的自然不必再說,然而如果是三方庫,則在進行專案移植時通常需要在新的環境下安裝需要的三方庫檔案,面對較大專案中眾多的三方庫,可以先將專案依賴庫匯出到txt檔案中,        &n

python中使用pip工具批量匯出專案所依賴的所有檔案及安裝的方法

          在Python中我們在專案中會用到各種庫,自帶的自然不必再說,然而如果是三方庫,則在進行專案移植時通常需要在新的環境下安裝需要的三方庫檔案,面對較大專案中眾多的三方庫,可以先將專案依賴庫匯出到txt檔案中,                    匯出命令

python】如何批量讀取資料夾的所有檔案資料,os模組與open函式結合使用例項

很多時候,由於資料眾多,分別儲存在資料夾裡,此時需要批量開啟檔案讀取,然後對資料整合進行操作。那麼就必須通過使用os模組和open函式相結合,通過os模組得到全部的檔案,然後通過open函式開啟檔案讀寫

SVG中Path Data資料簡化及資料夾所有檔案批量匯出圖片

先看效果圖片: using Svg; using System; using System.Collections.Generic; using System.Drawing.Imaging; using System.IO; using System.Text; usin

[Python Study Notes]批量ppt轉換為pdf

abs b- ber () link mat pad python not 腳本使用:1.python 3.x(2.x未測試)2.需要機器上裝有PowerPoint3.pip install comtypes4.將需要轉的ppt,pptx格式文件放到當前目錄下5.運行該腳本

[Python Study Notes]批量ppt轉換為pdf v1,0

找到 -s inpu tput 列表 usr als get 環境 ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ >

超簡單,只要27行Python代碼,批量ppt轉換為pdf,實用(還不趕緊收藏)

size span 批量 能夠 pow 分享圖片 alt png class 這是一個Python腳本,能夠批量地將微軟Powerpoint文件(.ppt或者.pptx)轉換為pdf格式。 加vx;tanzhouyiwan 免費領取Python學習資料一套 使用說明 1、

批量修改資料夾下所有檔案的名稱

所需工具:cmd、excel、記事本 一、利用cmd將資料夾下的內容全部輸出 假設要匯出的內容在E:/graduate/pic下,輸入: e: cd graduate cd pic dir > name.txt 將其中所有檔案的名字都存入name.txt中,建立的資料夾在路徑之下。

Python學習】使用Pyinstaller將py檔案匯出為exe檔案

PyInstaller其實就是把python解析器和你自己的指令碼打包成一個可執行的檔案,但是它不是跨編譯的,也就是說在Windows下用PyInstaller生成的exe只能執行在Windows下,在Linux下生成的只能執行在Linux下。 Pyinstaller的安裝 直接使用pip install

如何使用python對資料夾中的檔案進行批量改名(增、刪、改字串欄位)

【時間】2018.10.12 【題目】如何使用python對資料夾中的檔案進行批量改名(增、刪、改字串欄位)   【問題描述】今天需要對資料夾中的檔案進行批量改名,主要是因為名字中多出了自己不想要的字元段“data”想要將其刪除。這裡便以刪除名字中的字元段為例,至於增、改道理類

Python批量wav檔案改名

sample = r"C:\Users\Administrator\Desktop\aws-3 " files = os.listdir(sample) files = [sample + "\\" + f for f in files if f.endswith('.wav')] nu

Python批量wav檔案加入高斯白噪聲

#coding=gbk import os import wave import librosa import numpy as np def add_noise(data): wn = np.random.normal(0,1,len(data)) data_noise =

Python批量檔案進行VAD檢測和分段

準備: python2.7/3.+   webrtcvad import collections import contextlib import sys import wave import os import webrtcvad def read_wave(p