近來有需要大量將副檔名為ppt檔轉換為pptx檔的需求,
查到stack overflow的問答- Convert ppt file to pptx in Python
範例如下:
import win32com.client
App = win32com.client.Dispatch("Powerpoint.Application")
App.Visible = True
PPtPresentation = App.Presentations.Open('./test.ppt')
PPtPresentation.SaveAs('./test.pptx')
PPtPresentation.close()
App.Quit()
print('Program End')
這段程式在轉換普通的ppt檔沒有問題,
然而若是碰到加密過的ppt檔(加密方法: PowerPoint 簡報的密碼保護),
程式會卡住停在那邊,Office則會跳出一個視窗說「請輸入ppt的密碼」,
程式也不會報錯,
需要手動將ppt的視窗關掉程式才會繼續往下走。
能否讓程式跳過加密過的ppt檔不要處理呢?
一般來說,python的例外處理為try-except,
但我嘗試直接用try-except是無效的,
因此程式會停在那邊而不會報錯,直到手動將ppt的視窗關掉
import win32com.client
try:
App = win32com.client.Dispatch("Powerpoint.Application")
App.Visible = True
PPtPresentation = App.Presentations.Open('./test.ppt')
PPtPresentation.SaveAs('./test.pptx')
PPtPresentation.close()
App.Quit()
except Exception as e:
print(e)
print('Program End')
目前我嘗試google許久,仍找不到有效的解法
目前有朝幾個方向去思考,但目前苦於找不到資料: