大家好,我是魚皮。 人工智慧時 代, python 這門簡單易學的程式語言變得更加熱門。個人認為 Python 最大的優勢在於類別庫生態豐富,很多工具都有現成的開源計畫,比如 AI 工具、檔處理工具等。
雖然我們未必有時間深入學習 Python,但還是要學習下如何執行這些開源計畫,豐富自己的 「彈藥庫」。
這篇文章分享一位 Java 開發者 - 勇哥(作者認為自己是 python 小白), 花了兩個小時,第一次成功執行起來 python 計畫的經歷。為大家提供入門參考。
計畫是 powerpoint-extractor ,可以將 ppt 檔中的圖片提取出來,並輸出到固定的目錄。
1 安裝 python 環境
首先開啟終端,開啟後輸入 python3 。確定電腦上是否已安裝 python3,如果輸入 python 是檢視 mac 上的內建版本。
命令:python3【直接回車】
出現下面是頁面,表示已經安裝python3 【結束時可輸入:exit()然後點回車】
若沒有安裝,安裝 python3 如下兩種方式:
第一種方法 brew 安裝 python3 :brew install python3
第二種方法 官網 Python Releases for macOS ,根據自己的需求下載自己需要的版本下載 。
2 計畫 powerpoint-extractor
透過 git 命令 clone 該計畫 :
git clone [email protected]:2TallTyler/powerpoint-extractor.git
因為計畫依賴 python-pptx 元件,透過清華的映像執行如下的命令:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple python-pptx
執行完成之後,可以透過 pip3 list 命令檢視已安裝包列表 :
3 PyCharm 配置
透過 PyCharm 開啟該計畫 :
上圖,我們發 現 python 直譯器並沒有配置好 ,py 指令碼顯示 import 包失敗 。
點選添加 python 直譯器按鈕,勾選繼承全域包,並確認好 python3 的執行目錄是否正確,點選 OK 即可完成配置。
點開 extract.py ,核心程式碼非常容易理解:
for eachfile in glob.glob(self.input_dir + os.sep + "*.pptx"):
ppt = Presentation(eachfile)
print("* " + eachfile)
presentation_count += 1
self.cur_image_index = 1
name = self.generate_image_name_part(eachfile)
# 遍歷每張投影片
for page, slide in enumerate(ppt.slides):
# 將投影片上的所有文本收集到一個字串中,以換行符分隔
text = ''
for shape in slide.shapes:
if shape.has_text_frame and shape.text.strip():
text += os.linesep
text += shape.text
# 收集每張投影片中的影像
self.cur_slide_images = []
# 保存投影片中的影像
for shape in slide.shapes:
self.drill_for_images(shape, page + 1, name)
# 將頁碼、收集到的文本和演講者備註作為新行寫入CSV檔
image_list = ''
if len(self.cur_slide_images) > 0:
image_list = ','.join(self.cur_slide_images) # 將影像列表轉換為逗號分隔的字串
# 將資訊寫入CSV檔
writer.writerow([eachfile, page + 1, text, slide.notes_slide.notes_text_frame.text, image_list])
在程式碼小抄中閱讀程式碼,體驗更佳:
這段程式碼執行了以下操作:
對於每個 PowerPoint 檔,它載入演示文稿並逐一遍歷每張投影片。
對於每張投影片,它收集文本和影像資訊,並將其格式化為 CSV 檔的一行。
CSV 檔的每一行包括檔名、頁碼、投影片文本、投影片的演講者備註以及影像列表。
4 執行計畫
將測試 ppt 拷貝到 input 目錄,點選 run 。
當然,我們也可以透過如下的命令直接執行:
如果文章對你有所幫助,還請幫忙 點贊、在看、轉發 一下,你的支持會激勵作者輸出更高品質的文章,非常感謝!
👇🏻 點選下方閱讀原文,獲取魚皮往期編程幹貨。
往期推薦