欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python跨平臺讀取 .doc格式文件的方法

 更新時間:2025年02月23日 10:55:12   作者:gs80140  
在跨平臺的開發(fā)環(huán)境中,處理不同文件格式是一個常見問題,尤其是老舊的 .doc 格式,在這篇博客中,我們將介紹一種基于 Python 的跨平臺方案,使用 LibreOffice 將 .doc 文件轉(zhuǎn)換為 .docx 格式,之后再通過 docx2txt 進(jìn)一步處理文檔內(nèi)容,需要的朋友可以參考下

引言

在跨平臺的開發(fā)環(huán)境中,處理不同文件格式是一個常見問題,尤其是老舊的 .doc 格式。Microsoft Word 的 .doc 文件格式不如 .docx 格式那樣廣泛支持,因此我們往往需要一個可靠的方案來讀取和轉(zhuǎn)換 .doc 文件。在這篇博客中,我們將介紹一種基于 Python 的跨平臺方案,使用 LibreOffice 將 .doc 文件轉(zhuǎn)換為 .docx 格式,之后再通過 docx2txt 進(jìn)一步處理文檔內(nèi)容。

方案概述

  • 目標(biāo):在跨平臺環(huán)境中,讀取 .doc 格式文件。
  • 步驟
    1. 使用 LibreOffice 將 .doc 文件轉(zhuǎn)換為 .docx 格式。
    2. 使用 docx2txt 提取 .docx 文件的內(nèi)容。

這種方法的好處在于:

  • LibreOffice 是跨平臺的,支持 Linux、macOS 和 Windows。
  • docx2txt 是一個輕量級的庫,用于從 .docx 文件中提取文本內(nèi)容。

LibreOffice 跨平臺安裝方式

在使用 LibreOffice 轉(zhuǎn)換 .doc 文件之前,您需要在操作系統(tǒng)中安裝 LibreOffice。下面是針對不同操作系統(tǒng)的安裝方法:

1. Windows 安裝

  • 訪問 LibreOffice 官方網(wǎng)站:LibreOffice 下載頁面
  • 選擇 Windows 版本,下載并安裝安裝包。
  • 安裝完成后,確保 soffice 命令可以在命令行中被正確調(diào)用(通常 LibreOffice 會自動配置環(huán)境變量)。

2. macOS 安裝

  • 打開終端,使用 Homebrew 安裝 LibreOffice
brew install --cask libreoffice
  • 安裝完成后,LibreOffice 應(yīng)該會自動配置好相關(guān)命令,您可以通過終端運(yùn)行 soffice 來確認(rèn)是否安裝成功。

3. Linux 安裝

  • 在 Ubuntu 或 Debian 系統(tǒng)中,您可以使用以下命令安裝 LibreOffice:
sudo apt update
sudo apt install libreoffice
  • 在 Fedora 系統(tǒng)中,使用以下命令:
sudo dnf install libreoffice
  • 安裝完成后,您可以通過 soffice 命令來確認(rèn)是否安裝成功。

4. 驗(yàn)證安裝

在任何操作系統(tǒng)上,您可以通過命令行檢查 soffice 是否正常工作:

soffice --version

如果輸出 LibreOffice 的版本信息,表示安裝成功。

步驟詳解

  1. 使用 LibreOffice 轉(zhuǎn)換 .doc 為 .docx: LibreOffice 提供了一個命令行工具 soffice,可以批量處理文件轉(zhuǎn)換。它支持將 .doc 文件轉(zhuǎn)換為 .docx 格式。通過這種方式,即使原始文件是老舊的 .doc 格式,也可以轉(zhuǎn)換為更現(xiàn)代、更易處理的 .docx 格式。

  2. 讀取 .docx 文件內(nèi)容: 轉(zhuǎn)換完成后,我們使用 docx2txt 庫來讀取 .docx 文件中的文本。docx2txt 提供了簡單的 API,可以提取文檔中的文本內(nèi)容并返回。

完整代碼實(shí)現(xiàn)

以下是實(shí)現(xiàn)上述方案的完整代碼:

import docx2txt
import os
import subprocess
import shlex
 
def convert_doc_to_docx(doc_file, output_directory):
    """
    使用 LibreOffice 將 .doc 文件轉(zhuǎn)換為 .docx 格式
    :raises RuntimeError: 轉(zhuǎn)換失敗時拋出異常
    """
    try:
        # 創(chuàng)建輸出目錄(如果不存在)
        os.makedirs(output_directory, exist_ok=True)
 
        # 轉(zhuǎn)義所有參數(shù)防止命令注入
        safe_doc_file = shlex.quote(doc_file)
        safe_output_dir = shlex.quote(output_directory)
 
        # 構(gòu)建并執(zhí)行命令
        command = f"soffice --headless --convert-to docx --outdir {safe_output_dir} {safe_doc_file}"
        result = subprocess.run(
            command,
            shell=True,
            check=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            text=True
        )
 
        print(f"{doc_file} 轉(zhuǎn)換為 .docx 格式完成")
    except subprocess.CalledProcessError as e:
        error_msg = f"轉(zhuǎn)換失敗: {e.stderr.strip()}" if e.stderr else "未知錯誤"
        raise RuntimeError(f"{error_msg}\n命令: {e.cmd}") from e
    except Exception as e:
        raise RuntimeError(f"轉(zhuǎn)換過程中發(fā)生意外錯誤: {str(e)}") from e
 
 
def main():
 
    # 輸入文件路徑
    doc_file = "D:/extracodes/open-webui/backend/docs/1.doc"
 
    # 根據(jù) doc_file 獲取目錄
    output_directory = os.path.dirname(doc_file)
 
    # 根據(jù) doc_file 的后綴 .doc 換成 .docx
    docx_file = doc_file.replace(".doc", ".docx")
 
    # 判斷 docx_file 是否已經(jīng)存在, 如果已經(jīng)存在, 則刪除掉它
    if os.path.exists(docx_file):
        os.remove(docx_file)
 
    # 第一步:將 .doc 文件轉(zhuǎn)換為 .docx
    convert_doc_to_docx(doc_file, output_directory)
 
    # 第二步:對轉(zhuǎn)換后的 .docx 文件進(jìn)行處理(這里以轉(zhuǎn)換為 HTML 為例)
    page_content = docx2txt.process(docx_file)
    print(page_content)
 
 
if __name__ == "__main__":
    main()
代碼解釋
  1. convert_doc_to_docx 函數(shù): 該函數(shù)接受 .doc 文件路徑和輸出目錄作為輸入,使用 LibreOffice 的命令行工具 soffice 來將 .doc 文件轉(zhuǎn)換為 .docx 格式。--headless 參數(shù)表示不啟動 GUI,--convert-to 用于指定輸出格式。

  2. main 函數(shù)

    • 首先定義了 .doc 文件的路徑 doc_file
    • 然后通過替換文件后綴生成目標(biāo) .docx 文件路徑。
    • 檢查是否已有同名的 .docx 文件,如果有則刪除。
    • 調(diào)用 convert_doc_to_docx 函數(shù)進(jìn)行轉(zhuǎn)換。
    • 轉(zhuǎn)換完成后,使用 docx2txt.process 從 .docx 文件中提取文本內(nèi)容,并輸出。

適用環(huán)境

  • Linux/macOS/Windows:LibreOffice 和 docx2txt 都是跨平臺的,因此可以在大多數(shù)操作系統(tǒng)上使用。
  • Python 環(huán)境:需要安裝 docx2txt 庫,可以通過 pip install docx2txt 安裝。

結(jié)語

通過結(jié)合使用 LibreOffice 和 docx2txt,我們可以方便地跨平臺處理 .doc 文件,轉(zhuǎn)換成 .docx 格式后提取文本內(nèi)容。這種方法簡單、可靠,適用于大多數(shù)需要批量處理 .doc 文件的場景。如果你需要處理更復(fù)雜的文件內(nèi)容或支持更多文件格式,還可以探索其他 Python 庫,如 python-docx 或 PyWin32(僅限 Windows 環(huán)境)。

以上就是Python跨平臺讀取 .doc格式文件的方法的詳細(xì)內(nèi)容,更多關(guān)于Python跨平臺讀取.doc文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實(shí)踐項(xiàng)目之監(jiān)控當(dāng)前聯(lián)網(wǎng)狀態(tài)詳情

    python實(shí)踐項(xiàng)目之監(jiān)控當(dāng)前聯(lián)網(wǎng)狀態(tài)詳情

    介紹一個利用Python監(jiān)控當(dāng)前聯(lián)網(wǎng)狀態(tài)情況的python代碼,它可以清楚地知道,你的電腦網(wǎng)絡(luò)是否是鏈接成功或失敗,下面小編帶大家來一起學(xué)習(xí)它
    2019-05-05
  • Python實(shí)現(xiàn)的序列化和反序列化二叉樹算法示例

    Python實(shí)現(xiàn)的序列化和反序列化二叉樹算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的序列化和反序列化二叉樹算法,結(jié)合實(shí)例形式分析了Python二叉樹的構(gòu)造、遍歷、序列化、反序列化等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • 教你怎么用PyCharm為同一服務(wù)器配置多個python解釋器

    教你怎么用PyCharm為同一服務(wù)器配置多個python解釋器

    當(dāng)我們在服務(wù)器上創(chuàng)建了多個虛擬環(huán)境時,也可以在 PyCharm 中配置這些虛擬環(huán)境,方便不同的項(xiàng)目使用不同的環(huán)境,然而按照網(wǎng)上教程添加多個python解釋器后,PyCharm會自動幫我們創(chuàng)建多個重復(fù)的服務(wù)器,本文主要給出該問題的解決方法,同時也對添加解釋器做一個詳細(xì)的講解
    2021-05-05
  • Python 轉(zhuǎn)移文件至云對象存儲的方法

    Python 轉(zhuǎn)移文件至云對象存儲的方法

    對象存儲(Cloud Object Storage,COS)是一種存儲海量文件的分布式存儲服務(wù),具有高擴(kuò)展性、低成本、可靠安全等優(yōu)點(diǎn)。這篇文章主要介紹了Python 轉(zhuǎn)移文件至云對象存儲,需要的朋友可以參考下
    2021-02-02
  • Python中numpy.pad()函數(shù)的使用詳解

    Python中numpy.pad()函數(shù)的使用詳解

    這篇文章主要介紹了Python中numpy.pad()函數(shù)的使用詳解,在卷積神經(jīng)網(wǎng)絡(luò)中,為了避免卷積運(yùn)算導(dǎo)致輸出圖像縮小和圖像邊緣信息丟失,常常采用圖像邊緣填充技術(shù),即在圖像四周邊緣填充0,使得卷積運(yùn)算后圖像大小不會縮小,同時也不會丟失邊緣和角落的信息,需要的朋友可以參考下
    2023-10-10
  • Python中Matplotlib的點(diǎn)、線形狀、顏色以及繪制散點(diǎn)圖

    Python中Matplotlib的點(diǎn)、線形狀、顏色以及繪制散點(diǎn)圖

    與線型圖類似的是,散點(diǎn)圖也是一個個點(diǎn)集構(gòu)成的,下面這篇文章主要給大家介紹了關(guān)于Python中Matplotlib的點(diǎn)、線形狀、顏色以及繪制散點(diǎn)圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 查看django版本的方法分享

    查看django版本的方法分享

    今天小編就為大家分享一篇查看django版本的方法分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 用Python按時間分割txt文件中的數(shù)據(jù)方法步驟

    用Python按時間分割txt文件中的數(shù)據(jù)方法步驟

    這篇文章主要給大家介紹了如何用Python按時間分割txt文件中的數(shù)據(jù)的方法步驟,文中通過代碼示例給大家講解的非常詳細(xì),對大家學(xué)習(xí)Python處理txt文件有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • Python lxml庫的簡單介紹及基本使用講解

    Python lxml庫的簡單介紹及基本使用講解

    lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的數(shù)據(jù),本文重點(diǎn)給大家介紹Python lxml庫的簡單介紹及基本使用講解,感興趣的朋友跟隨小編一起看看吧
    2020-12-12
  • Python循環(huán)一行的寫法分享

    Python循環(huán)一行的寫法分享

    這篇文章主要介紹了Python循環(huán)一行的寫法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論