<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
pathlib 是Python內建庫,Python 檔案給它的定義是 Object-oriented filesystem paths(物件導向的檔案系統路徑)。pathlib 提供表示檔案系統路徑的類,其語意適用於不同的作業系統。
路徑類在純路徑之間劃分,純路徑提供純粹的計算操作而沒有 I / O,以及具體路徑,它繼承純路徑但也提供 I / O 操作。
相對於 os 模組的 path 方法,Python3 標準庫 pathlib 模組的 Path 對路徑的操作會更簡單。
使用 os 模組時,通過 getcwd()
方法可以直接獲取當前檔案路徑
在 Pycharm 中,可以使用 os.path.dirname(__file__)
獲取當前檔案路徑,因為 Python 並沒有提供 __file__ 這個概念,他是 Pycharm 提供的:
import os print(os.getcwd()) # C:Usersbobin.yangPycharmProjectsuntitled print(os.path.dirname(__file__)) # C:/Users/bobin.yang/PycharmProjects/untitled
在 pathlib 模組中,通過 Path.cwd()
方法可以直接獲取當前檔案路徑,我們可以動手試一試:
import pathlib print(pathlib.Path.cwd()) # C:Usersbobin.yangPycharmProjectsuntitled
通過 Pycharm 我們可以使用快捷鍵 ctrl+滑鼠左鍵
點選檢視該方法的詳細介紹。
從上圖中可以看出 cwd()
方法不過是對 os 庫中 getcwd()
方法進行了封裝,看起來好像更差勁了,但是官方的推出一定不是子虛烏有的,現在讓我們一起來揭祕。
上面那個案例彷彿讓 pashlib 庫的使用變得更加複雜了,為了揭祕,我們只能一同感受下 pathlib 庫的構成,瞭解 pathlib 庫如何帶給我們便捷。
在 os 模組中,如果我們要獲取某一個檔案的父目錄,os 模組的寫法為:
import os print(os.path.dirname(os.path.dirname(os.getcwd()))) # C:PycharmProjects
在 pathlib 庫中,可以通過這樣簡潔方法實現:
import pathlib print(pathlib.Path.cwd().parent) # C:PycharmProjects
並且,如果你需要找他爺爺,是不是再來一個 .parent
就行了。相比較 os 模組的 os.path.dirname()
是不是方便太多太多了?
如果你要在他父目錄中拼接路徑,通過 os 模組你可能需要寫這麼一長串程式碼:
import os print(os.path.join(os.path.dirname(os.getcwd()), '路徑拼接', '真麻煩')) # C:PycharmProjects路徑拼接真麻煩
當你使用 pathlib 的時候,我們一起來感受他的便捷之處吧!
# /Users/mac/test.py import os paths = ('路徑拼接', '真麻煩') print(pathlib.Path.cwd().parent.joinpath(*paths)) # C:PycharmProjects路徑拼接真麻煩
通過 pathlib 庫拼接路徑,你可以很方便的調節他在他祖輩的位置,妙哉。
pathlib 封裝了很多的 os.path 中的方法,如下所示:
上一節的操作大部分都是通過 pathlib 庫中的 Path 實現,其實他還有一個更加高大上的模組,也就是我們這一節的主角:pathlib.PurePath
。
PurePath 是一個純路徑物件,純路徑物件提供了實際上不存取檔案系統的路徑處理操作。
有三種方法可以存取這些類,我們也稱之為 flavor 。
下面讓我們來實現一個神奇的功能,判斷當前的路徑下是否有符合'*.py'規則的檔案。
import pathlib print(pathlib.PurePath(__file__).match('*.py')) # True
輸出為什麼會是 True
呢?因為當前資料夾下不就有一個 test.py
嗎?
看見 pathlib.PurePath 後面跟著 match,那是不是能說明他是個物件,而不是一個單純的路徑字串,因此我們可以試著列印 pathlib.PurePath 看一看。
import pathlib os_path = os.path.dirname(__file__) print(os_path) # C:/PycharmProjects/untitled pure_path = pathlib.PurePath(__file__) print(pure_path) # C:PycharmProjectsuntitledrun.py print(type(pure_path)) # <class 'pathlib.PureWindowsPath'> print(pathlib.PurePath(__file__).match('*.py')) # True
通過列印 os.path 獲取當前路徑的結果,得到一個路徑字串;而通過 pathlib.PurePath 則獲得了一個 PurePosixPath 物件,並且由此得到的路徑包括了當前檔案 run.py。
到此這篇關於Python檔案系統模組pathlib庫的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45