1. 程式人生 > >比os.path更高階的路徑物件pathlib

比os.path更高階的路徑物件pathlib

pathlib中的Path類繼承自PurePath,對PurePath中的部分方法進行了過載,相比於os.path有更高的抽象級別


幾個特點

  • 路徑連線便捷
  • 正則匹配相關檔案,返回可迭代可開啟的檔案物件

示例1

from pathlib import Path
root = Path("../PycharmProject")
config_dir = root/Path("config")
# 等價於config_dir = os.path.join(root, 'config')
print(str(config_dir))

Output:

../PycharmProject/config


示例2

path1 = Path("/home/unv")
path2 = Path("/home/unv/project/src")
print(path2.relative_to(path1))

Output: PosixPath(“project/src”)


正則匹配相關檔案,並返回可迭代的檔案物件

config.files = config_dir.rglob("*.json")

返回: [ PosixPath(“/home/unv/data1.json”), PosixPath(“/home/unv/data2.json”)]
!可迭代


方法列表

(具體可看原始碼的細節)

基本用法:

Path.iterdir()  #遍歷目錄的子目錄或者檔案

Path.is_dir()  #判斷是否是目錄

Path.glob()  #過濾目錄(返回生成器)

Path.resolve()  #返回絕對路徑

# 拼接路徑(目錄中進行導航-官網說法)

Path.exists()  #判斷路徑是否存在

Path.open()  #開啟檔案(支援with)

Path.unlink()  #刪除檔案或目錄(目錄非空觸發異常)


基本屬性:

Path.parts  #分割路徑 類似os.path.split(), 不過返回元組

Path.drive  #返回驅動器名稱

Path.root  #返回路徑的根目錄

Path.anchor  #自動判斷返回drive或root

Path.parents  #返回所有上級目錄的列表


改變路徑:

Path.with_name()  #更改路徑名稱, 更改最後一級路徑名

Path.with_suffix()  #更改路徑字尾

#拼接路徑

Path.joinpath()  #拼接路徑

Path.relative_to()  #計算相對路徑


測試路徑:

Path.match()  #測試路徑是否符合pattern

Path.is_dir()  #是否是檔案

Path.is_absolute()  #是否是絕對路徑

Path.is_reserved()  #是否是預留路徑

Path.exists()  #判斷路徑是否真實存在


其他方法:

Path.cwd()  #返回當前目錄的路徑物件

Path.home()  #返回當前使用者的home路徑物件

Path.stat()  #返回路徑資訊, 同os.stat()

Path.chmod()  #更改路徑許可權, 類似os.chmod()

Path.expanduser()  #展開~返回完整路徑物件

Path.mkdir()  #建立目錄

Path.rename()  #重新命名路徑

Path.rglob()  #遞迴遍歷所有子目錄的檔案


參考:[pathlib]內建pathlib庫的常用屬性和方法