用Python將目錄中的doc文件轉換為docx文件

  • 0 views
  • 閱讀模式

要實現將目錄中的doc文件轉換為docx文件,可以使用Python中的`python-docx`庫和`python-docx2pdf`庫。以下是一個實現該功能的示例代碼:

import os
from docx import Document
from docx2pdf import convert

# 獲取當前目錄路徑
current_dir = os.getcwd()

# 遍歷目錄中的文件
for filename in os.listdir(current_dir):
    # 判斷文件是否為doc文件
    if filename.endswith('.doc'):
        doc_file = os.path.join(current_dir, filename)
        # 使用python-docx庫打開doc文件
        doc = Document(doc_file)

        # 設置新的文件名,并將".doc"替換為".docx"
        docx_filename = filename.replace('.doc', '.docx')
        docx_file = os.path.join(current_dir, docx_filename)

        # 保存為docx文件
        doc.save(docx_file)

        # 轉換為pdf文件(可選)
        pdf_filename = filename.replace('.doc', '.pdf')
        pdf_file = os.path.join(current_dir, pdf_filename)
        convert(docx_file, pdf_file)

        print(f"轉換成功:{docx_filename}")

上述代碼中,首先需要安裝`python-docx`和`python-docx2pdf`庫。然后,使用`os`模塊獲取當前目錄路徑,并使用`os.listdir()`遍歷目錄中的文件。判斷文件是否為.doc文件后,使用`python-docx`庫打開doc文件,并使用`.save()`方法將其保存為docx文件??梢允褂胉python-docx2pdf`庫將docx文件轉換為pdf文件(可選)。最后,在控制臺打印轉換成功的文件名。

請注意,此代碼假設你的目錄中只有需要轉換的doc文件,并且沒有子目錄。如果你的目錄結構復雜或包含其他類型的文件,請相應地修改代碼。


程序運行時,顯示is not a Word file,content type is 'application/vnd.openxmlformats-officedocument.themeManager+xml'這是什么意思,怎么解決?

這個錯誤提示表明程序在打開文檔時遇到了一個不支持的文件類型。根據錯誤消息中提到的內容類型 `'application/vnd.openxmlformats-officedocument.themeManager+xml'`,可以看出嘗試打開的文件實際上是一個主題管理器文件(Theme Manager file),而不是一個有效的Word文檔文件。

這可能是因為在目錄中存在了不正確的文件類型或擴展名不匹配的文件。要解決這個問題,可以在代碼中添加一些文件類型的驗證和過濾。

以下是更新后的代碼示例,添加了文件類型的檢查和過濾功能:

import os
import magic  # 借助第三方庫進行文件類型檢查
from docx import Document
from docx2pdf import convert

# 獲取當前目錄路徑
current_dir = os.getcwd()

# 遍歷目錄中的文件
for filename in os.listdir(current_dir):
    # 獲取文件路徑
    file_path = os.path.join(current_dir, filename)
    
    # 使用第三方庫進行文件類型檢查
    file_type = magic.from_file(file_path, mime=True)
    
    # 判斷文件類型是否為doc
    if file_type == 'application/msword':
        # 使用python-docx庫打開doc文件
        doc = Document(file_path)

        # 設置新的文件名,并將".doc"替換為".docx"
        docx_filename = filename.replace('.doc', '.docx')
        docx_file = os.path.join(current_dir, docx_filename)

        # 保存為docx文件
        doc.save(docx_file)

        # 轉換為pdf文件(可選)
        pdf_filename = filename.replace('.doc', '.pdf')
        pdf_file = os.path.join(current_dir, pdf_filename)
        convert(docx_file, pdf_file)

        print(f"轉換成功:{docx_filename}")
    else:
        print(f"忽略文件:{filename}")

在更新后的代碼中,引入了`magic`庫來進行文件類型檢查。使用`magic.from_file(file_path, mime=True)`可以獲取文件的MIME類型。在判斷文件類型為`'application/msword'`時,才會將其視為doc文件,并進行后續的處理。對于其他類型的文件,程序將會顯示忽略該文件的消息。

請確保已安裝依賴的`magic`庫,可以使用`pip install python-magic`命令進行安裝。如果還是遇到問題,可能需要檢查文件的實際類型和擴展名是否匹配,或者手動排除不正確的文件。

繼續閱讀
RS
  • 本文由 發表于 2023年6月21日 10:31:02
助你整理雜亂無章的文件 技術?隨筆

助你整理雜亂無章的文件

今天的小程序,可以一鍵完成文件整理,一起來看看吧! 按照文件格式整理 具體來說就是不同的文件后綴名稱放置到不同的文件夾當中 今天我們只需要使用 os 和 shutil 兩個庫就足夠了。os 是 Pyt...
用 Python 實現所有算法-GitHub 技術?隨筆

用 Python 實現所有算法-GitHub

學會了 Python 基礎知識,想進階一下,那就來點算法吧!畢竟編程語言只是工具,結構算法才是靈魂。 新手如何入門 Python 算法? 幾位印度小哥在 GitHub 上建了一個各種 Python 算...
評論  0  訪客  0
匿名

發表評論

匿名網友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

確定