Python 找出word 裡面所有圖片

markdown #說明 這個有發現兩個做法,第一個是把word的doc檔案存成html格式,就會自動將圖片裝在同一個資料夾 第二種方法是,因為python 有一個方法是把 docx 存成 zip,在 zip 底下會有一個目錄都是存圖片的,所以做法是把原本的 doc 檔案先轉成 docx,接著再把docx轉成 zip,再將圖片存出來,再把 zip 轉回docx 相比之下第一個方法簡單多了! #操作流程 ##ToHtml參數8 ``` #!/usr/bin/env python #coding=utf-8 from win32com import client as wc word = wc.Dispatch('Word.Application') doc = word.Documents.Open(r"D:\Python\20191224_Bonescan\01.doc") doc.SaveAs(r"D:\Python\20191224_Bonescan\1.html", 8) doc.Close() word.Quit() print("finish") ``` ##Demo 原始的 word
- download word ###執行程式後產出的樣子
##ToHtml參數10 ``` #!/usr/bin/env python #coding=utf-8 from win32com import client as wc word = wc.Dispatch('Word.Application') doc = word.Documents.Open(r"D:\Python\20191224_Bonescan\01.doc") doc.SaveAs(r"D:\Python\20191224_Bonescan\1.html", 10) doc.Close() word.Quit() print("finish") ``` ##Demo ###執行程式後產出的樣子
##兩個參數相比: 參數10 後面的圖片資料夾比較乾淨,比較符合這次的目標萃取出圖片 ##參考: - https://www.itread01.com/content/1550459708.html ##第二種方法來囉~ #操作流程 ##由於後續操作要用 docx 的檔案格式,所以先從 doc to docx ``` from win32com import client as wc #导入模块 word = wc.Dispatch("Word.Application") # 打开word应用程序 import os docdir=r"D:\Python\20191224_Bonescan" os.chdir(docdir) files = os.listdir(docdir) #print(files) for file in files: if file.endswith(".doc"): #匹配docx文件 #print(file) a=docdir+'/'+file doc = word.Documents.Open(a) # 打开word文件 doc.SaveAs("{}x".format(a), 16) # 另存为后缀为".docx"的文件,其中参数12指docx文件 doc.Close() # 关闭原来word文件 word.Quit() print("finish") ``` ##docx抓出圖片 ``` #!/usr/bin/env python # coding:gbk import os,zipfile,shutil def getimage(docdir): os.chdir(docdir) dirlist = os.listdir(docdir) for i in dirlist: if i.endswith(".docx"): #匹配docx文件 docname = i.split(".") #以“.”做成列表形式 os.rename(i,"%s.ZIP"%docname[0]) #重命名为ZIP格式 f = zipfile.ZipFile("%s.ZIP"%docname[0], 'r') for file in f.namelist(): if "word" in file: f.extract(file) #将压缩包里的word文件夹解压出来 f.close() oldimagedir = r"%s\word\media"%docdir #定义图片文件夹 shutil.copytree(oldimagedir,"%s\%s"%(docdir,docname[0])) #拷贝到新目录,名称为word文件的名字 os.rename("%s.ZIP" % docname[0],"%s.docx"% docname[0]) #将ZIP名字还原为DOCX shutil.rmtree("%s\word"%docdir) #删除word文件夹 if __name__=="__main__": getimage(r"D:\Python\20191224_Bonescan") ``` ##Demo
##參考: - https://zhuanlan.zhihu.com/p/64189783 - https://blog.csdn.net/qq_15969343/article/details/81673970 - https://blog.csdn.net/orange_wrj/article/details/77945878 這個出來圖片也是屬於乾淨的,只是程式邏輯有一點複雜,但是我有遇到有一個特殊的情況,無法用這個方法 就是在 doc 轉成 docx 的時候,有些圖片無法轉換成功,這裡猜測原本的圖片可能不屬於 jpg或是png這一類型的,或是在貼上圖片的時候採用匯入等方法 都可能導致後續 doc轉 docx 不成功,所以後來我還是採用 doc 轉 html 抓圖 ##Demo:doc to docx 圖片失敗
這個後續目前沒有想到解法.....

留言