有時候我們會收到一些Word文檔,,如簡歷,、論文以及其他的Word文檔,,里面包含了很多圖片。如何使用自動化的方式,,提取Word里面的圖片呢,?下面就讓我們來一起學(xué)習(xí)一下 1 安裝第三方庫 Python-docx打開cmd命令行(或者powershell)窗口,輸入安裝第三方庫命令 pip install python-docx
等待安裝完成 2,、導(dǎo)入os,、re以及docx庫import docx import os, re
3,、編寫圖片提取函數(shù)1、讀取Word文檔,,遍歷圖片 doc = docx.Document(word_path) dict_rel = doc.part._rels for rel in dict_rel: rel = dict_rel[rel] if "image" in rel.target_ref: if not os.path.exists(result_path): os.makedirs(result_path) img_name = re.findall("/(.*)", rel.target_ref)[0] word_name = os.path.splitext(word_path)[0] if os.sep in word_name: new_name = word_name.split('\\')[-1] else: new_name = word_name.split('/')[-1] img_name = f'{new_name}-'+'.'+f'{img_name}'
2,、依次保存圖片 with open(f'{result_path}/{img_name}', "wb") as f: f.write(rel.target_part.blob)
3、完整的函數(shù)代碼 def get_pictures(word_path, result_path): """ 圖片提取 :param word_path: word路徑 :return: """ try: doc = docx.Document(word_path) dict_rel = doc.part._rels for rel in dict_rel: rel = dict_rel[rel] if "image" in rel.target_ref: if not os.path.exists(result_path): os.makedirs(result_path) img_name = re.findall("/(.*)", rel.target_ref)[0] word_name = os.path.splitext(word_path)[0] if os.sep in word_name: new_name = word_name.split('\\')[-1] else: new_name = word_name.split('/')[-1] img_name = f'{new_name}-'+'.'+f'{img_name}' with open(f'{result_path}/{img_name}', "wb") as f: f.write(rel.target_part.blob) except: pass
4,、編寫主運行函數(shù)if __name__ == '__main__':
#獲取文件夾下的word文檔列表,路徑自定義
os.chdir("D:\Demo") spam=os.listdir(os.getcwd()) for i in spam: get_pictures(str(i),os.getcwd())
5,、結(jié)果展示完整代碼 import docx import os, re
# 需要安裝第三方包 # pip install python-docx def get_pictures(word_path, result_path): """ 圖片提取 :param word_path: word路徑 :return: """ try: doc = docx.Document(word_path) dict_rel = doc.part._rels for rel in dict_rel: rel = dict_rel[rel] if "image" in rel.target_ref: if not os.path.exists(result_path): os.makedirs(result_path) img_name = re.findall("/(.*)", rel.target_ref)[0] word_name = os.path.splitext(word_path)[0] if os.sep in word_name: new_name = word_name.split('\\')[-1] else: new_name = word_name.split('/')[-1] img_name = f'{new_name}-'+'.'+f'{img_name}' with open(f'{result_path}/{img_name}', "wb") as f: f.write(rel.target_part.blob) except: pass
if __name__ == '__main__':
#獲取文件夾下的word文檔列表,路徑自定義
os.chdir("D:\Demo") spam=os.listdir(os.getcwd()) for i in spam: get_pictures(str(i),os.getcwd())
今天和大家一起學(xué)習(xí)了如何從Word文檔中批量提取圖片,大家都學(xué)會了嗎,?趕快試一試吧,!后續(xù),我會和大家一起學(xué)習(xí)更多的Python編程與Office辦公自動化的例子,,歡迎大家關(guān)注,!
|