pathlib 是 Python 標準庫中的一個模組,提供了一個面向對象的方式來處理文件系統路徑。
這個模組自 Python 3.4 開始引入,旨在簡化文件和目錄的操作,使其更加直觀和易於使用。
以下是 pathlib 模組的主要特點和功能介紹。
跨平台支持: pathlib 可以自動根據操作系統選擇適當的路徑表示方式,例如在 Windows 上使用 WindowsPath,在 Unix/Linux 系統上使用 PosixPath。這意味著你不需要擔心不同操作系統之間的路徑分隔符問題。
面向對象: pathlib 將路徑表示為對象,這使得路徑操作更具可讀性和可維護性。你可以直接調用方法來進行各種操作,而不必使用函數式的 os.path 方法。
簡化的語法: 使用 / 運算符來合併路徑,使得代碼更簡潔。例如,Path('/home') / 'user' 會生成 /home/user 的路徑。
from pathlib import Path
# 創建當前工作目錄的 Path 對象
current_path = Path('.')
#或是可以使用current_path = Path('')
print(current_path.resolve()) # 輸出當前工作目錄的絕對路徑
('.')
(點): 在文件系統中,.
是一個特殊的符號,表示當前目錄。
這意味著如果你在某個目錄下運行 Python 程式,使用 Path('.') 創建的 Path 對象將指向該目錄。
在使用 Python 的 pathlib 模組時,Path('.')
和Path('')
都可以用來表示當前工作目錄,
但它們在某些情況下的行為和意圖有所不同。Path('.')
與 Path('')
的區別Path('.')
:
這表示當前工作目錄,通常用於明確指示你正在處於當前目錄下進行操作。
使用 '.' 是一種常見的做法,表示“這裡”或“當前位置”。
Path('')
:
這通常表示一個空路徑,在某些上下文中,它可能會被解釋為根目錄或不明確的路徑。
在大多數操作中,使用 Path('') 可能會導致不明確的行為,特別是在需要明確指定當前目錄的情況下。
使用 Path('.'): 如果你的意圖是明確地指向當前工作目錄,建議使用 Path('.')。這樣可以提高代碼的可讀性,讓其他開發者更容易理解你的意圖。
使用 Path(''): 雖然在某些情況下可以使用,但通常不推薦這樣做,因為它可能會導致混淆或不一致的行為。
path = Path('/tmp/myfile.txt')
# 檢查文件是否存在
print(path.exists()) # 輸出: True 或 False
# 檢查是否為文件
print(path.is_file()) # 輸出: True 或 False
# 檢查是否為目錄
print(path.is_dir()) # 輸出: True 或 False
# 寫入文本到文件
path.write_text('Hello, World!')
# 讀取文件內容
content = path.read_text()
print(content) # 輸出: Hello, World!
# 列出目錄中的所有文件和子目錄
for item in Path('/tmp').iterdir():
print(item)
# 合併路徑
new_path = Path('/home') / 'user' / 'documents'
print(new_path) # 輸出: /home/user/documents
# 獲取文件名和擴展名
print(new_path.name) # 獲取文件名
print(new_path.suffix) # 獲取擴展名
from pathlib import Path
import json
current_path = Path('.')
digit_mapping ={ 1:'a', 2:'b', 3:'c', 4:'d', 5:'e'}
Path(current_path/'digit_mapping.json').write_text(json.dumps(digit_mapping))
代碼解析
1.current_path
:
這是一個 Path 對象,代表當前工作目錄
。通常是使用 Path('.') 或其他方式創建的。
2.current_path/'digit_mapping.json'
:
- 這部分使用了 /
運算符來合併路徑。這是 pathlib 模組的一個特性,它允許你以更直觀的方式構建文件路徑。
- 最終結果是一個新的 Path 對象,指向當前工作目錄下的 digit_mapping.json 文件。
3.json.dumps(digit_mapping
):
- json.dumps() 是將 Python 對象(如字典、列表等)轉換為 JSON 格式字符串的方法。
- 在這裡,digit_mapping 可能是一個字典或其他可序列化的 Python 對象。這行代碼將其轉換為 JSON 字符串。
4.Path(...).write_text(...)
:
- write_text()
是 pathlib.Path
對象的一個方法,用於將文本寫入指定的文件。
如果該文件digit_mapping.json不存在,則會自動創建它,然後將 digit_mapping字典寫入。
- 在這裡,它將前面生成的 JSON 字符串寫入到 digit_mapping.json 文件中。
在當前目錄下生成一個資料夾
from pathlib import Path
import json
current_path = Path('.')
digit_mapping ={ 1:'a', 2:'b', 3:'c', 4:'d', 5:'e'}
Path(current_path/'digit_mapping.json').write_text(json.dumps(digit_mapping))
out_dir = Path(current_path /'out')
out_dir.mkdir(exist_ok = True)
Path(out_dir/'digit_mapping.json').write_text(json.dumps(digit_mapping))
代碼解析
1.current_path/'out'
:
- 這行代碼的作用是創建一個新的 Path 對象out 子目錄,並指向當前工作目錄下的 out 子目錄。
- current_path
是一個 Path 對象,代表當前工作目錄。
2.out_dir = Path(current_path/'out')
:
- 這行代碼將合併後的路徑賦值給變量 out_dir
,使其成為一個指向當前工作目錄下的 out 目錄的 Path 對象。
3.out_dir.mkdir(exist_ok=True)
:
- mkdir()
方法用於創建目錄。如果指定的目錄已經存在,且exist_ok=True
,則不會引發錯誤。如果目錄不存在,則會創建它。
- 在這裡,因為設置了exist_ok=True
,即使 out_dir
已經存在,也不會引發FileExistsError
。
4.Path(out_dir/'digit_mapping.json')
:
- 使用 / 運算符將 out_dir 路徑與文件名 'digit_mapping.json' 合併,生成一個新的 Path 對象,指向該子目錄中的 JSON 文件。
5.write_text(json.dumps(digit_mapping))
:
- json.dumps(digit_mapping)
將 Python 對象(在此例中是名為 digit_mapping 的變量)轉換為 JSON 格式的字符串。
- 然後,使用 write_text() 方法將該 JSON 字符串寫入到指定的文件(即 digit_mapping.json)。如果該文件不存在,則會自動創建它。
pathlib 模組提供了一種更現代化、更靈活的方式來處理文件系統路徑,適合用於各種文件和目錄操作。它的面向對象設計使得代碼更具可讀性,並且能夠輕鬆地處理不同操作系統之間的差異。如果你有更多問題或需要進一步了解 pathlib 的功能,隨時告訴我!