日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pythonpath manager_python 路径操作工具 pathlib,比 os 模块好用太多

發布時間:2025/3/11 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythonpath manager_python 路径操作工具 pathlib,比 os 模块好用太多 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 python 當中,如果你想控制路徑,基本上繞不開 os.path。我希望看完這篇文章以后,熟練使用 python 的你能立刻開始使用 pathlib 模塊,一刻也不要耽誤。

pathlib 相對于 os.path 有以下優勢:

pathlib 導入更加清晰;

采用面向對象編程,能同時存儲更多狀態,os.path 返回的通常只有一個字符串;

pathlib 使用更簡單

獲取路徑相關信息

pathlib 會把路徑相關信息都存在一個 Path 的核心類里面,比如用戶名,后綴名,上層目錄,文件創建時間,文件大小等等。 這些 os.path 是沒有辦法一次性都給我們的,因為 os.path 調用的函數幾乎都是返回字符串格式,不能像 Path 對象這樣保存狀態。

1, 獲取當前文件路徑。這種操作方式可能會包含相對路徑信息。

# 獲取當前路徑

current_path = Path(__file__)

print(current_path)

2,當前文件夾路徑。

current_path = Path('.')

print(current_path)

3, 獲取當前文件和文件夾的元信息。

st = current_path.stat()

print(st)

# 文件大小

print(st.st_size)

# 文件時間

print(st.st_atime)

4,Path(‘.’) 這種方式可以包含相對路徑 ../doc 等,如果要獲取絕對路徑要使用 resolve 獲取絕對路徑。

current_path.resolve()

如果路徑不存在, 是不會拋出異常的。如果想拋出異常,可以設置參數 strict 設為 True,拋出 FileNotFoundError。

current_path.resolve(strict=True)

5, 獲取父目錄。這是 os.path 最被人詬病的一點,你需要不停的通過 os.path.dirname() 去獲取父目錄,層級多了,心都碎了。 在 pathlib 里,因為采用的是對象形式,可以直接通過 parent 屬性獲取父目錄,父目錄同時也是一個 Path 對象,照樣可以用 parent 去獲取目錄。

parent = current_path.parent.parent.parent

6, 如果需要不停的返回上一級目錄,不停的 parent 屬性也會讓人不厭其煩。pathlib 提供了一種更靈活的機制讓你去獲取高層父目錄, 就是 parents 屬性。 parents 會把從根目錄開始的所有層級都保存起來,直接通過索引獲取對應層級就可以了。

parents = current_path.parent

first_p = parents[0]

second_p = parents[1]

這里有一點非常遺憾,pathlib 沒有支持逆向索引,也就是說不能通過 parents[-2] 去達到和 current_path.parent.parent 相同的效果。在實際應用中,這種場景用得還是挺多的,需要通過某個文件獲取上層路徑,上上層路徑。

# TODO: 可以封裝的技能,目前未實現

parents[-3]

提供一種封裝思路:

def my_parents(self, nagtive_num):

....

return self.parents[len(current_path.parents) + nagtive_num]

還有一種思路,重寫源碼中的 __getitem__ 方法,這里不做深入闡述。

7, 獲取文件名稱

name = current_path.name

8, 獲取文件后綴名。

file_suffix = current_path.suffix

9,獲取不含后綴名的文件名。

file_without_suffix = current_path.stem

路徑操作

1,with_name, 改變文件名, 生成新路徑,實際文件不發生變化.

# 改變文件名為 new_name.py,生成新路徑,實際文件不發生變化

# 原來的文件名封裝在 current_path 對象中

with_name = current_path.with_name('new_name.py')

2, with_suffix, 改變后綴名。

# 改變后綴名,生成新路徑,實際文件不發生變化

with_suffix = current_path.with_suffix('.new_suffix')

3, 路徑拼接。 pathlib 提供了和 os.path.join() 類似的路徑拼接方式:

new_path = current_path.joinpath('join_path')

更重要的是,他提供了一種更直觀的方式 /:

new_path = current_path / 'lemon/yuze' / 'yuze_again'

這種方式的實現原理學過測試開發課程的同學應該很容易想到,定義一個除法運算的魔術方法就可以。

思考:pathlib 可以完全代替 os.path 嗎?

?

總結

以上是生活随笔為你收集整理的pythonpath manager_python 路径操作工具 pathlib,比 os 模块好用太多的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。