python 實現docx與doc文件的互相轉換

因文件格式要求,需要將docx 與doc文件相互轉換,特尋找python代碼,與大傢共分享

from win32com import client
#轉換doc為docx
def doc2docx(fn):
  word = client.Dispatch("Word.Application") # 打開word應用程序
  #for file in files:
  doc = word.Documents.Open(fn) #打開word文件
  doc.SaveAs("{}x".format(fn), 12)#另存為後綴為".docx"的文件,其中參數12或16指docx文件
  doc.Close() #關閉原來word文件
  word.Quit()
#轉換docx為doc
def docx2doc(fn):
  word = client.Dispatch("Word.Application") # 打開word應用程序
  #for file in files:
  doc = word.Documents.Open(fn) #打開word文件
  doc.SaveAs("{}".format(fn[:-1]), 0)#另存為後綴為".docx"的文件,其中參數0指doc
  doc.Close() #關閉原來word文件
  word.Quit()
docx2doc(u"d:\\python\\1.docx")

如果想轉換為其他格式文件,需要在format文件名內修改,並用如下save as 參數

如docx轉換為pDf,用如下語句:

doc.SaveAs("{}.pdf".format(fn[:-5]), 17)

需要說明的是:

要安裝OFFICE,如果是使用金山WPS的,則還不能應用

補充:python批量將文件夾內所有doc轉成docx

doc轉docx函數

import os
from win32com import client
 
def doc_to_docx(path):
  if os.path.splitext(path)[1] == ".doc":
    word = client.Dispatch('Word.Application')
    doc = word.Documents.Open(path) # 目標路徑下的文件
    doc.SaveAs(os.path.splitext(path)[0]+".docx", 16) # 轉化後路徑下的文件
    doc.Close()
    word.Quit()
 
path = ""#填寫文件夾路徑
doc_to_docx(path)

獲取文件夾下的所有文件的絕對路徑

import os 
def find_file(path, ext, file_list=[]):
  dir = os.listdir(path)
  for i in dir:
    i = os.path.join(path, i)
    if os.path.isdir(i):
      find_file(i, ext, file_list)
    else:
      if ext == os.path.splitext(i)[1]:
        file_list.append(i)
  return file_list 
 
dir_path = ""
ext = ".doc"
file_list = find_file(dir_path, ext)

源碼

import os
from win32com import client
 
def doc_to_docx(path):
  if os.path.splitext(path)[1] == ".doc":
    word = client.Dispatch('Word.Application')
    doc = word.Documents.Open(path) # 目標路徑下的文件
    doc.SaveAs(os.path.splitext(path)[0]+".docx", 16) # 轉化後路徑下的文件
    doc.Close()
    word.Quit()
 
def find_file(path, ext, file_list=[]):
  dir = os.listdir(path)
  for i in dir:
    i = os.path.join(path, i)
    if os.path.isdir(i):
      find_file(i, ext, file_list)
    else:
      if ext == os.path.splitext(i)[1]:
        file_list.append(i)
  return file_list 
 
dir_path = "C:\Users\python"#批量轉換文件夾
ext = ".doc"
file_list = find_file(dir_path, ext)
for file in file_list:
  doc_to_docx(file)

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: