一、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