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
這個常量是什麼?
最開始我看的連結一,該位置是個17,也只有數字,沒有解釋。我不太懂什麼意思,我以為是數量,但是誰知道一個PPT裡有多少圖片,不該是個常量啊。
然後搜SaveAs的引數,又看到連結二:
這段程式碼的意思是,SaveAs的第一個引數指定檔名,第二個引數指定格式。但當時我也沒仔細看引數名,而且後來也確實找不到裡面具體有哪些引數。然後翻到連結三,裡面有一張圖:
可以看到紅色方框裡和第一條連結所看到的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