Python 模塊 Pathlib

Python 模塊 Pathlib

pathlib 模塊的目的是用面向對象(object-oriented)的 API 替換字符串的操作來解析、創建文件和目錄。

Python 是跨平臺的,模塊 pathlib 包括一些類來處理 POSIX 或者 Windows 語法的文件系統的路徑。它也包含一些特殊的類只操作字符串而不接觸具體的操作系統,如:PurePosixPath 和 PureWindowsPath 。

為了正確的工作在真實的操作系統上,可以直接使用 Path 類。它會根據當前的操作系統來確定是否用 PosixPath 或者 WindowsPath。

創建路徑


要創建一個路徑對象 Path,第一個參數傳入一個字符串,表示路徑的名稱。如果想要根據當前路徑來創建一個新路徑,可以使用 / 操作符,參數可以是一個字符串或者路徑對象。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

本例中,創建了3個路徑對象,最後打印了生成的對象類型。其中創建 root 路徑時,使用了上級的目錄引用 ..。

resolve() 方法會按照文件系統,返回絕對路徑。軟連接會返回它指向的真實路徑。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

joinpath() 方法根據多個路徑片段創建路徑。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

給出一個路徑對象,然後希望獲取當前路徑下另一個文件對象或者不同擴展名的對象,可以使用 with_name() 和 with_suffix() 方法。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

解析路徑


Path 對象有很多方法和屬性可以從路徑獲取部分值。例如 parts 屬性根據路徑分隔符分隔開返回一個序列。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

屬性 parent 返回一個路徑的父級路徑,相當於調用 os.path.dirname()。屬性 parents 返回上級目錄的迭代器,直到根目錄。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

還存在其他的屬性返回路徑的一些部分。屬性 name 返回最後的路徑分隔符之後的內容,suffix 返回擴展名,stem 返回擴展名之前的名稱。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

便利方法


home() 方法返回當前用戶主目錄,cwd() 方法返回當前目錄。

Python 模塊 Pathlib

目錄內容


有 3 個方法可以獲取文件系統的內容,iterdir() 返回一個生成器(generator),每次從當前目錄返回一項。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

glob() 方法只返回匹配了一定模式(pattern)的文件名:

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

rglob() 可以遞歸的訪問子目錄。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

讀取和寫入文件


每個路徑 Path 的實例都包含操作文件的方法。使用 read_bytes() 和 read_text() 方法立刻讀取文件的內容。方法 write_bytes() 和 write_text() 寫入文件。 open() 方法打開文件獲取文件對象。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

目錄和軟連接


mkdir() 方法可以創建目錄。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

使用 symlink_to() 方法創建軟鏈接,鏈接名稱是傳給路徑的值,symlink_to()的參數是指向的文件。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

這個例子創建了一個軟鏈接,最後使用 resolve() 方法打印了真實的文件名稱。

文件類型


Path 路徑實例包含多個方法測試文件的類型。

  • is_file() 判斷是否是文件
  • is_dir() 判斷是否是目錄
  • is_symlink() 判斷是否是軟鏈接
  • is_fifo() 判斷是否是 FIFO 隊列
  • is_block_device() 判斷是否是塊設備
  • is_char_device() 判斷是否是字符設備

文件屬性


訪問文件的詳細信息可以使用 stat() 或者 lstat() 方法,lstat() 用於軟鏈接。這些方法返回的信息是和 os.stat() 和 os.lstat() 一致的。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

owner() 和 group() 方法直接返回文件的所有者和分組。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

touch() 方法類似 unix 的命令 touch,創建一個文件或者更新文件的修改日期。

權限


chmod() 方法更改一個文件的權限,傳遞一個整數值。這個整數值可以使用模塊 stat 創建。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

刪除


rmdir() 方法刪除一個空目錄。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib

如果目錄不存在,會觸發異常 FileNotFoundError。如果目錄非空,則觸發 OSError 錯誤,提示目錄不是空的。

對於文件,軟鏈接,或者其他的文件類型,使用 unlink() 方法。

Python 模塊 Pathlib

執行:

Python 模塊 Pathlib


分享到:


相關文章: