精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

還在使用 os.path?Python 中的 Pathlib 太香了

開發 前端
相信現在依然有很多人習慣于使用os來處理文件/文件夾/路徑等,但其實Python自帶的Pathlib庫處理這些更優雅、更安全。

寫在前面

相信現在依然有很多人習慣于使用os來處理文件/文件夾/路徑等,但其實Python自帶的Pathlib庫處理這些更優雅、更安全,你會發現很多大型開源項目都在使用它,那么它到底有什么魅力?花點時間讓我們一起看看吧!

先看這個引例,假設我們需要獲取某個文件夾下所有的txt文件,基于os會寫成如下形式:

import os

dir_path = "/home/user/documents"# Find all text files inside a directory
files = [os.path.join(dir_path, f) for f in os.listdir(dir_path) if os.path.isfile(os.path.join(dir_path, f)) and f.endswith(".txt")]

使用Pathlib則變成如下形式,是不是心動了:

from pathlib import Path

dir_path = Path("/home/user/documents")
files = list(dir_path.glob("*.txt"))

os.path 的最大缺點是將系統路徑視為字符串,極容易導致混亂,Pathlib 在Python3.4中被支持, 通過將路徑表示為獨特的對象解決了這個問題,并為路徑處理引入更多可擴展用法,許多操作在os需要層層嵌套,而Pathlib將使開發人員更輕松地處理與路徑和文件相關的所有事情。

處理路徑

1.創建路徑

幾乎所有pathlib 的功能都可以通過其 Path 子類訪問,可以使用該類創建文件和目錄,有多種初始化Path的方式,比如,使用當前工作路徑:

from pathlib import Path

Path.cwd() # PosixPath('/home/user/Downloads')

使用home:

Path.home() # PosixPath('/home/user')

同樣的可以指定字符串路徑創建路徑:

p = Path("documents") # PosixPath('documents')

使用正斜杠運算符進行路徑連接:

data_dir = Path(".") / "data"
csv_file = data_dir / "file.csv"
print(data_dir) # data
print(csv_file) # data/file.csv

檢查路徑是否存在,可以使用布爾函數 exists:

data_dir.exists() 

data_dir.exists() 檢查文件是否存在:

csv_file.exists()

csv_file.exists() 使用 is_dir 或 is_file 函數來檢查是否為文件夾、文件:

data_dir.is_dir()
csv_file.is_file()

大多數路徑都與當前運行目錄相關,但某些情況下必須提供文件或目錄的絕對路徑,可以使用 absolute

csv_file.absolute() # PosixPath('/home/user/Downloads/data/file.csv')

如果仍然需要將路徑轉為字符串,可以調用 str(path) 強制轉換:

str(Path.home()) # '/home/user'

現如今大多數庫都支持 Path 對象,包括 sklearn 、 pandas 、 matplotlib 、 seaborn 等。

2.Path屬性

Path 對象有許多有用屬性,一起來看看這些示例,首先定義一個圖片路徑:

image_file = Path("images/shadousheng.png").absolute() # PosixPath('/home/user/Downloads/images/midjourney.png')

先從 parent 開始,它將返回當前工作目錄的上一級:

image_file.parent # PosixPath('/home/user/Downloads/images')

獲取文件名:

image_file.name # 'shadousheng.png'

它將返回帶有后綴的文件名,若只想要前綴,則使用stem:

image_file.stem # shadousheng

只想要后綴也很簡單:

image_file.suffix # '.png'

image_file.suffix # '.png' 如果要將路徑分成多個部分,可以使用 parts:

image_file.parts # ('/', 'home', 'user', 'Downloads', 'images', 'shadousheng.png')

如果希望這些組件本身就是 Path 對象,可以使用 parents 屬性,它會創建一個生成器

for i in image_file.parents:
    print(i)

# /home/user/Downloads/images
# /home/user/Downloads
# /home/user
# /home
# /

3.處理文件

想要創建文件并寫入內容,不必再使用 open 函數,只需創建一個 Path 對象搭配 write_text 或 write_btyes 即可:

markdown = data_dir / "file.md"

# Create (override) and write text
markdown.write_text("# This is a test markdown")

讀取文件,可以 read_text 或 read_bytes:

markdown.read_text() # '# This is a test markdown'
len(image_file.read_bytes()) # 1962148

但請注意, write_text 或 write_bytes 會覆蓋文件的現有內容:

# Write new text to existing file
markdown.write_text("## This is a new line")
# The file is overridden
markdown.read_text() # '## This is a new line'

要將新信息附加到現有文件,應該在 a (附加)模式下使用 Path 對象的 open 方法:

# Append text
with markdown.open(mode="a") as file:
    file.write("\n### This is the second line")

markdown.read_text() # '## This is a new line\n### This is the second line'

使用rename 重命名文件,如在當前目錄中重命名,file.md 變成了 new_markdown.md:

renamed_md = markdown.with_stem("new_markdown")

markdown.rename(renamed_md) # PosixPath('data/new_markdown.md')

通過 stat().st_size 查看文件大小:

# Display file size
renamed_md.stat().st_size # 49

查看最后一次修改文件的時間:

from datetime import datetime

modified_timestamp = renamed_md.stat().st_mtime

datetime.fromtimestamp(modified_timestamp) # datetime.datetime(2023, 8, 1, 13, 32, 45, 542693)

st_mtime 返回一個自 1970 年 1 月 1 日以來的秒數。為了使其可讀,搭配使用 datatime 的 fromtimestamp 函數。

要刪除不需要的文件,可以 unlink:

renamed_md.unlink(missing_ok=True)

如果文件不存在,將 missing_ok 設置為 True 則不會引起報錯

4.處理目錄

首先,看看如何遞歸創建目錄:

new_dir.mkdir(parents=True, exist_ok=True)

默認情況下, mkdir 創建給定路徑的最后一個子目錄,如果中間父級不存在,則必須將 parents 設置為 True 達到遞歸創建目的。

要刪除目錄,可以使用 rmdir ,如果給定的路徑對象是嵌套的,則僅刪除最后一個子目錄:

new_dir.rmdir()

要在終端上列出 ls 等目錄的內容,可以使用 iterdir 。結果將是一個生成器對象,一次生成一個子內容作為單獨的路徑對象,和os.listdir不同的是,它返回每個內容的絕對路徑而不是名字:

for p in Path.home().iterdir():
    print(p)
# /home/user/anaconda3
# /home/user/.googleearth
# /home/user/.zcompdump
# /home/user/.ipython
# /home/user/.bashrc

要捕獲具有特定擴展名或名稱的所有文件,可以將 glob 函數與正則表達式結合使用。

例如,使用 glob("*.txt") 查找主目錄中所有文本文件:

home = Path.home()
text_files = list(home.glob("*.txt"))

len(text_files) # 3

要遞歸搜索文本文件(即在所有子目錄中),可以glob 與 rglob 結合使用:

all_text_files = [p for p in home.rglob("*.txt")]

len(all_text_files) # 5116

以上就是Pathlib中常用方法。

責任編輯:趙寧寧 來源: 啥都會一點的研究生
相關推薦

2021-05-11 07:10:18

標準庫DjangoOS

2010-03-25 12:50:45

Python代碼

2021-09-24 09:30:05

os.path模塊Python

2025-05-06 09:10:00

Python路徑處理os.path

2024-04-29 08:32:21

os.path模塊Python內置函數

2023-11-07 10:36:37

2020-12-21 07:36:15

緩存數據庫緩存層

2025-08-15 12:19:08

2024-01-05 13:26:00

KafkaTopicSpring

2024-01-26 07:48:10

SpringKafka提升

2020-10-10 11:07:38

Java開發代碼

2025-08-29 00:00:00

2021-07-28 14:20:13

正則PythonFlashText

2020-12-28 11:09:40

Python正則表達式代碼

2023-11-09 08:01:41

Spring緩存注解

2025-09-04 09:13:22

2025-01-09 11:24:59

線程池美團動態配置中心

2025-09-04 09:33:29

2024-08-09 08:55:43

if執行器版本
點贊
收藏

51CTO技術棧公眾號

久久xxxx精品视频| 日韩免费啪啪| 中文字幕精品三级久久久 | 亚洲午夜精品在线| 免费一区二区三区| 国产成人精品毛片| 久久人人超碰| 美日韩精品视频免费看| 一二三不卡视频| www久久久| 欧美日韩免费一区| 中文字幕第50页| 青青草娱乐在线| 粉嫩一区二区三区性色av| 国产成人精品免高潮费视频| 青青草成人免费| 成人激情电影在线| 欧美成人vr18sexvr| 国产理论在线播放| 周于希免费高清在线观看| 亚洲男女一区二区三区| 欧洲一区二区在线观看| 黑人操亚洲女人| 国产一区中文字幕| 国产精品视频专区| 波多野结衣啪啪| 在线亚洲成人| 久久久久成人精品| 老湿机69福利| 欧美三级美国一级| 亚洲美女性视频| 国产白袜脚足j棉袜在线观看| 亚洲三级在线| 欧美日韩视频专区在线播放| 日本免费一级视频| a级片免费在线观看| 亚洲色图一区二区| 一区国产精品| 老司机在线永久免费观看| 国产亚洲一区二区三区在线观看| 51精品国产人成在线观看 | 精品国产凹凸成av人网站| 国产精品久久久久久9999| 国产成人午夜性a一级毛片| 色系网站成人免费| 欧美日韩大尺度| 中文字幕在线视频久| 欧美午夜久久久| 欧美a在线视频| 中文字幕在线免费观看视频| 日韩欧美在线播放| 日韩网址在线观看| 日本欧美日韩| 欧美三级电影在线观看| 向日葵污视频在线观看| 四虎国产精品免费久久5151| 欧美精品乱码久久久久久| 亚洲男人天堂av在线| 天堂久久一区| 日韩欧美在线1卡| 深夜视频在线观看| 久久久免费毛片| 亚洲精品视频中文字幕| 四虎永久免费在线观看| 波多野结衣在线观看一区二区三区 | 国产精品成人一区二区网站软件| 久久69精品久久久久久久电影好| 久久精品久久国产| 国产精品婷婷| 国产精品扒开腿做爽爽爽男男| 中国一级特黄视频| 国产一区二区免费视频| 国产综合精品一区二区三区| 亚洲av毛片成人精品| 欧美激情在线免费观看| 中文字幕一区二区三区四区五区人 | 精品中文字幕av| 欧美日韩成人影院| 91精品国产91久久综合桃花| 国产51自产区| 精品久久久久久久久久久aⅴ| 日韩视频在线观看免费| 久久精品性爱视频| 日韩在线一区二区| 99视频免费观看| 人成免费电影一二三区在线观看| 国产精品视频观看| 日韩精品在线视频免费观看| 日韩电影大全网站| 日韩欧美成人午夜| 91成人破解版| 伊人久久成人| 国产在线精品自拍| 四虎影视精品成人| 成人免费在线视频观看| 青青草成人免费在线视频| 国产成人精品一区二区三区免费| 精品国产免费人成电影在线观看四季| 99久久精品免费视频| 欧美高清不卡| 国产精品18久久久久久麻辣| 亚洲国产精品久久久久久久| 国产精品无遮挡| a在线视频观看| 亚洲一区二区三区久久久| 日韩高清免费在线| 国产盗摄一区二区三区在线| 久久综合影音| 精品高清视频| 香蕉久久aⅴ一区二区三区| 在线视频一区二区免费| 中文字幕一区二区三区乱码不卡| 国产高清欧美| 国产精品com| 污视频在线免费| 一区二区三区国产豹纹内裤在线| 三级在线视频观看| 丝袜美腿综合| 性欧美长视频免费观看不卡| 97人人爽人人爽人人爽| 欧美激情资源网| 六月激情综合网| 欧美成人一区在线观看| 欧美高清视频免费观看| 一区二区国产欧美| 中文一区在线播放| 亚洲人成色77777| 神马香蕉久久| 欧美在线激情视频| 人妻少妇一区二区三区| 一区二区激情小说| wwwwwxxxx日本| 成人区精品一区二区婷婷| 日韩av123| 精品三级久久久久久久电影聊斋| 午夜精品久久久久久久久久| 国产免费a级片| 国产精品啊v在线| 国产精品免费区二区三区观看| 国内精品久久久久国产| 9191成人精品久久| 午夜爽爽爽男女免费观看| 激情深爱一区二区| 日本在线视频www色| 日本精品在线观看| 欧美国产日韩一区二区三区| 亚洲xxx在线| 香蕉久久一区二区不卡无毒影院| 中文字幕在线播放一区二区| 狠狠入ady亚洲精品| 国产一区二区三区免费不卡| 成人在线黄色电影| 亚洲欧美国产精品久久久久久久| 最近免费中文字幕大全免费版视频| 久久综合色天天久久综合图片| 免费在线激情视频| 成久久久网站| 成人两性免费视频| 青青草原av在线| 日韩国产精品一区| 中文字幕一区二区三区四区欧美| 亚洲国产成人一区二区三区| 亚洲第一天堂久久| 黑人一区二区三区四区五区| 国产精品一区二区免费看| 欧美sm一区| 国产亚洲精品va在线观看| 中文字幕有码无码人妻av蜜桃| 亚洲桃色在线一区| 9.1在线观看免费| 美女尤物久久精品| 亚洲乱码一区二区三区| 欧美成人一级| 91精品国产亚洲| 3p在线观看| 日韩久久精品一区| 天天爽夜夜爽人人爽| 国产精品灌醉下药二区| 人妻激情偷乱视频一区二区三区| 国产视频一区欧美| 亚洲一区二区三区免费观看| www.国产精品一区| 欧日韩在线观看| 成年人黄视频在线观看| 日韩精品福利网站| 91片黄在线观看喷潮| 亚欧色一区w666天堂| 人与嘼交av免费| 丁香六月综合激情| 九九热在线免费| 激情综合激情| 亚洲一区二三| 亚洲激情播播| 亚洲一区二区中文字幕| 欧美magnet| 久国内精品在线| av在线中文| 日韩电影中文字幕一区| av资源免费看| 欧美午夜影院一区| 成年人午夜视频| 亚洲四区在线观看| 国产成人免费观看网站| 成人av资源在线观看| 国产福利精品一区二区三区| 久色成人在线| 每日在线观看av| 一本一本久久a久久综合精品| 欧美日韩亚洲在线| 久久精品福利| 91久久精品www人人做人人爽| av亚洲一区二区三区| 97色在线视频观看| 欧美日韩在线视频免费观看| 精品国偷自产在线| 国产福利电影在线| 日韩精品亚洲视频| 欧美 日韩 国产 成人 在线| 91精品在线一区二区| 亚洲一线在线观看| 色偷偷成人一区二区三区91| 色婷婷av国产精品| 亚洲国产精品久久人人爱| 精品国产欧美日韩不卡在线观看| 国产精品免费视频网站| 国产高清一区二区三区四区| 久久久亚洲午夜电影| 极品白嫩丰满美女无套| 成人av网站在线观看免费| 男人女人拔萝卜视频| 国产剧情一区在线| 性色av浪潮av| 国产乱子伦一区二区三区国色天香| 欧美一级xxxx| 狠狠色狠狠色综合| 亚洲精品综合在线观看| 精品亚洲国产成人av制服丝袜| 中文字幕有码av| 久久精品二区亚洲w码| 欧美日韩中文不卡| 精品一二三四区| 中文字幕一区二区在线观看视频| 精品一区二区三区久久| 天堂在线一区二区三区| 国产在线不卡一区| 日本美女久久久| 丁香婷婷综合网| 搡老熟女老女人一区二区| 99久久久久久| 自拍偷拍亚洲天堂| 国产日韩精品视频一区| 污污视频网站在线免费观看| 中文字幕亚洲在| 日本高清一二三区| 亚洲一卡二卡三卡四卡五卡| 日韩av女优在线观看| 色综合久久综合网97色综合| 91麻豆精品在线| 欧美精品色一区二区三区| www.热久久| 亚洲精品国产电影| 川上优的av在线一区二区| 夜夜嗨av色综合久久久综合网| 在线播放日本| 欧美多人爱爱视频网站| 亚洲天堂手机| 国产精品一二三在线| 国产一区二区三区亚洲综合| 国产精品一区视频| 欧美精品乱码| 日本a级片在线观看| 亚洲一区二区成人| 99re精彩视频| 99久久精品免费看| 波多野结衣av在线观看| 亚洲欧美日韩系列| 99视频在线看| 欧美三级日韩三级| 成人午夜福利视频| 在线亚洲国产精品网| 2024最新电影免费在线观看| 欧美亚洲国产视频小说| 日韩综合久久| 欧美日韩精品免费观看| 先锋资源久久| 777米奇影视第四色| 黑人巨大精品欧美一区| 成年人网站免费看| 亚洲美女视频在线| 午夜精品免费观看| 精品日产卡一卡二卡麻豆| 国产九九在线| 久久久天堂国产精品女人| 不卡亚洲精品| 精品国产一区二区三区日日嗨| 97精品中文字幕| 国内自拍在线观看| 国产盗摄精品一区二区三区在线 | 欧美激情在线免费| 欧美少妇在线观看| 日本亚洲视频在线| 久久久午夜精品福利内容| 国产精品国产三级国产普通话蜜臀 | 日本暖暖在线视频| 国产69久久精品成人看| 中文字幕久久精品一区二区| 日产精品高清视频免费| 伊人狠狠色j香婷婷综合| 日本77777| 国产精品情趣视频| 精品黑人一区二区三区| 精品中文视频在线| 99热99re6国产在线播放| 成人精品在线观看| 日韩在线不卡| 天堂社区在线视频| 久久久久久久久久看片| 日本三级小视频| 欧美精品一区二区久久婷婷| 18加网站在线| 91美女片黄在线观看游戏| 成人免费av| 欧美黄色性生活| 欧美经典一区二区| 国产午夜麻豆影院在线观看| 日韩av在线导航| 538视频在线| 国产乱码精品一区二区三区中文| 永久亚洲成a人片777777| 三区视频在线观看| 日韩一区日韩二区| 国产女人18毛片18精品| www.欧美精品| 成人影院网站ww555久久精品| 亚洲国产欧美日韩| 另类欧美日韩国产在线| 91导航在线观看| 欧美日韩成人在线一区| 五月天婷婷在线视频| 国产日本欧美视频| 99久久亚洲精品| 天天操夜夜操很很操| 亚洲另类在线视频| 亚洲奶汁xxxx哺乳期| 久久久爽爽爽美女图片| 色先锋久久影院av| 国产一级特黄a大片免费| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久一级大片| 日韩精品一区二区在线视频| 粉嫩高潮美女一区二区三区| 日本一区二区三区四区五区| 日韩电影大片中文字幕| 原纱央莉成人av片| 日韩资源av在线| 九九在线精品视频| 久久久久久久国产视频| 亚洲精品一区二区三区四区高清| а√天堂资源官网在线资源| 免费久久99精品国产自| 日韩av不卡一区二区| 免费国产羞羞网站美图| 精品1区2区在线观看| 日本在线啊啊| 亚洲精品视频一二三| 国产经典欧美精品| 日韩在线观看第一页| 在线视频欧美日韩| 日韩精品一区二区三区中文在线| 无码中文字幕色专区| 国产午夜精品久久久久久免费视| 一级爱爱免费视频| 欧美国产精品人人做人人爱| 亚洲精品亚洲人成在线| 91精品999| 精品国产电影一区| 在线观看免费版| 国产伦一区二区三区色一情| 日本特黄久久久高潮| 黄色一级片在线免费观看| 亚洲精品永久免费| 精品国产乱码一区二区三区| 18禁免费观看网站| 最新久久zyz资源站| 婷婷在线观看视频| 成人在线观看视频网站| 国产一区二区你懂的| 久草手机视频在线观看| 亚洲精品国产suv| 欧美国产亚洲精品| 北条麻妃在线视频| 亚洲一区二区影院| 亚洲1卡2卡3卡4卡乱码精品| 国产精品视频免费观看| 久久国产婷婷国产香蕉| 国产精品500部| 米奇精品一区二区三区在线观看| 女优一区二区三区| 香蕉视频免费网站| 欧美绝品在线观看成人午夜影视|