Python Pathlib 模塊:簡化文件路徑和目錄操作的利器

一、Pathlib 概述

Pathlib 是 Python 中處理文件和目錄路徑的模塊。它在 Python3.4 版本中被引入,旨在簡化路徑操作,並提供一種更加直觀的操作方式。路徑可以描述成單獨的抽象對象,相互之間可以執行操作,而無需擔心路徑的特定字符串表示形式,從而避免了使用字符串預處理方法的情況。

Python 中大多數文件路徑庫都是基於字符串,例如 os.path、os.chdir()、os.makedirs() 等,雖然它們是功能強大的工具,但是對於長字符串參數和重複性編碼有一定的局限性。Pathlib 在這個層面上進行了大幅升級。

二、Pathlib 複製文件

在 Pathlib 中,Path 對象代表文件路徑或目錄路徑。由於 Path 對象被看作是輕量級的、直觀的對象,所以如果您需要複製文件,Pathlib 庫肯定是您的不二之選。

下面是一個示例,基本演示了如何使用 Path 副本。

from pathlib import Path

if __name__ == '__main__':
    source_file = Path('source_file.txt')
    destination_file = Path('destination_file.txt')
    with source_file.open(mode='r') as source, destination_file.open(mode='w') as destination:
        destination.write(source.read())

上述代碼旨在讀取名為source_file.txt 的文件,並將其內容寫入新文件destination_file.txt。可以使用 Path.open() 方法以指定的模式打開並操作文件。

三、Pathlib glob 與 rglob

glob 和 rglob 是 Pathlib 最重要的方法之一。注意,Path.glob() 和 Path.rglob() 方法分別迭代在當前目錄和遞歸在其所有 descendent(後代)。

下面是一個示例,演示如何使用 rglob() 方法遍歷目錄樹。

from pathlib import Path

dir_path = Path('.')
for file in dir_path.rglob('*.py'):
    print(file.name)

上述代碼演示了遍歷當前工作目錄下所有 .py 文件的方法。glob 和 rglob 方法是遞歸目錄結構的絕佳組合。

我們還可以使用許多其他的文件篩選器,如 *.txt , **/*.js 等等。除此之外,可以使用 .joinpath() 將多個路徑鏈接在一起,以創建要搜索的完整路徑。

四、Pathlib 過濾器

Pathlib 同時支持多種方式的文件過濾器,這使得它具有十分強大的靈活性。使用 Pathlib 通過名稱、通配符、正則表達式、後綴名和目錄過濾文件。

下面是一個示例,演示如何使用多個過濾器:

from pathlib import Path

path = Path('.')
for f in path.glob('*'):
    if not f.is_file() or str(f).endswith('.jpg'):
        continue
    print(f.name)

上述代碼演示了如何遍歷當前工作目錄下的所有非 jpg 文件的名稱。is_file() 方法和 endswith() 方法被廣泛用於檢查文件是否為目標類型。

五、Pathlib 內容檢查

Pathlib 模塊中的方法還提供了信任的內容檢查方法,可以避免破壞文件系統。Pathlib 包也可以通過不同種類的路徑操作查找和檢索文件。

下面是一個示例,演示如何使用 Path.read_text() 從 disk 中讀取文件並使用 Path.write_text() 寫入文件:

from pathlib import Path

path = Path('sample.txt')
contents = path.read_text()
path.write_text(contents)

上述代碼將文件的內容讀取到字符串中並寫入一個新文件中。

結束語

在本文中,我們對 Python 3 的 Pathlib 進行了全面介紹,包括複製文件、路徑迭代、文件過濾器和內容檢索。Pathlib 可以非常方便的替代 Python 2 中的 os.path,在 Python 應用程序中處理文件和目錄路徑時,這使得開發程序變得更加便捷。

原創文章,作者:NXMMT,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/330410.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NXMMT的頭像NXMMT
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • Python刷課:優化學習體驗的利器

    Python刷課作為一種利用自動化技術優化學習體驗的工具已經被廣泛應用。它可以幫助用戶自動登錄、自動答題等,讓用戶在學習過程中可以更加專註於知識本身,提高效率,增加學習樂趣。 一、…

    編程 2025-04-29
  • lsw2u1:全能編程開發工程師的利器

    lsw2u1是一款多功能工具,可以為全能編程開發工程師提供便利的支持。本文將從多個方面對lsw2u1做詳細闡述,並給出對應代碼示例。 一、快速存取代碼段 在日常開發中,我們總會使用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • 光模塊異常,SFP未認證(entityphysicalindex=6743835)——解決方案和

    如果您遇到類似optical module exception, sfp is not certified. (entityphysicalindex=6743835)的問題,那麼…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • Python代碼實現迴文數最少操作次數

    本文將介紹如何使用Python解決一道經典的迴文數問題:給定一個數n,按照一定規則對它進行若干次操作,使得n成為迴文數,求最少的操作次數。 一、問題分析 首先,我們需要了解迴文數的…

    編程 2025-04-29
  • Python磁盤操作全方位解析

    本篇文章將從多個方面對Python磁盤操作進行詳細闡述,包括文件讀寫、文件夾創建、刪除、文件搜索與遍歷、文件重命名、移動、複製、文件權限修改等常用操作。 一、文件讀寫操作 文件讀寫…

    編程 2025-04-29
  • Python元祖操作用法介紹

    本文將從多個方面對Python元祖的操作進行詳細闡述。包括:元祖定義及初始化、元祖遍歷、元祖切片、元祖合併及比較、元祖解包等內容。 一、元祖定義及初始化 元祖在Python中屬於序…

    編程 2025-04-29

發表回復

登錄後才能評論