1. 程式人生 > >拋棄os.path,擁抱pathlib

拋棄os.path,擁抱pathlib

基於Python的檔案、目錄和路徑操作,我們一般使用的是`os.path`模組。 `pathlib`是它的替代品,在`os.path`上的基礎上進行了封裝,實現了路徑的物件化,api更加通俗,操作更便捷,更符程式設計的思維習慣。 pathlib模組提供了一些使用語義化表示檔案系統路徑的類,這些類適合多種作業系統。路徑類被劃分為純路徑(該路徑提供了不帶I/O的純粹計算操作),以及具體路徑(從純路徑中繼承而來,但提供了I/O操作)。 首先我們看一下pathlib模組的組織結構,其核心是6個類,這6個類的基類是PurePath類,其它5個類都是從它派生出來的: ![](https://img2020.cnblogs.com/blog/1762677/202005/1762677-20200520112502033-245658717.png) > 箭頭連線的是有繼承關係的兩個類,以 PurePosixPath 和 PurePath 類為例,PurePosixPath 繼承自 PurePath,即前者是後者的子類。 - PurePath 類:將路徑看做是一個普通的字串,它可以實現將多個指定的字串拼接成適用於當前作業系統的路徑格式,同時還可以判斷任意兩個路徑是否相等。從英文名來理解,Pure是純粹的意思,表示PurePath類純粹只關心路徑的操作,而不管真實檔案系統中路徑是否有效、檔案是否存在、目錄是否存在等現實問題。 - PurePosixPath 和 PureWindowsPath 是 PurePath 的子類,前者用於操作 UNIX(包括 Mac OS X)風格作業系統的路徑,後者用於操作 Windows 作業系統的路徑。我們都知道兩種風格的作業系統在路徑分隔符上有一定的區別。 - Path 類和以上 3 個類不同,在操作路徑的同時,還能操作檔案/目錄,並和真實的檔案系統互動,例如判斷路徑是否真實存在。 - PosixPath 和 WindowsPath 是 Path 的子類,分別用於操作 Unix(Mac OS X)風格的路徑和 Windows 風格的路徑。 PurePath、PurePosixPath 和 PureWindowsPath這三個純路徑類通常用在一些特殊的情況裡,如: - 如果你需要在Unix裝置裡操作Windows路徑,或在Windiws裝置裡操作Unix路徑。因為我們不能在Unix上例項化一個真正的Windows路徑,但我們可以例項化一個純Windows路徑,假裝我們在操作windows。 - 你想要確保你的程式碼只操作路徑而不和作業系統真實互動。 > 科普:UNIX 型別的作業系統和 Windows 作業系統上,路徑的格式是完全不同的,主要區別在於根路徑和路徑分隔符,UNIX 系統的根路徑是斜槓(/),而 Windows 系統的根路徑是碟符(C:);UNIX 系統路徑使用的分隔符是正斜槓(/),而 Windows 使用的是反斜槓(\)。 ## 一、PurePath類 PurePath 類(以及 PurePosixPath 類和 PureWindowsPath 類)都提供了大量的構造方法、例項方法以及類例項屬性供我們使用。 在例項化 PurePath 類時,會自動適配作業系統。如果在 UNIX 或 Mac OS X 系統中,構造方法實際返回的是 PurePosixPath 物件;反之,如果在 Windows 系統上使用 PurePath 建立例項,構造方法返回的是 PureWindowsPath 物件。 例如,在 Windows 系統中執行如下語句: ```python from pathlib import PurePath path = PurePath('file.txt') print(type(pa