最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用pathlib進(jìn)行文件系統(tǒng)操作

 更新時(shí)間:2024年11月13日 09:41:59   作者:python收藏家  
pathlib?是?Python?的一個(gè)標(biāo)準(zhǔn)庫(kù),它提供了一個(gè)面向?qū)ο蟮奈募到y(tǒng)路徑操作接口,本文主要介紹了Python使用pathlib進(jìn)行文件系統(tǒng)操作的相關(guān)知識(shí),有需要的可以了解下

pathlib 是 Python 的一個(gè)標(biāo)準(zhǔn)庫(kù),它提供了一個(gè)面向?qū)ο蟮奈募到y(tǒng)路徑操作接口。使用 pathlib,你可以以一種更直觀和更易于理解的方式處理文件路徑,而不必使用字符串操作來(lái)分割和連接路徑。

os模塊 vs pathlib

在Python 3.4之前,處理文件路徑的更傳統(tǒng)的方法是使用os模塊。

我們可以通過(guò)考慮數(shù)據(jù)科學(xué)中的一個(gè)常見(jiàn)任務(wù)來(lái)展示pathlib的獨(dú)特價(jià)值:如何找到給定目錄及其所有子目錄中的所有png文件。

如果我們使用的是os模塊,我們可能會(huì)編寫(xiě)以下代碼:

import os
dir_path = "/home/user/documents"
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(".png")
]

雖然這段代碼解決了查找png文件的即時(shí)任務(wù),但它揭示了os模塊的幾個(gè)主要缺點(diǎn)。首先,代碼很長(zhǎng),幾乎不可讀,這是一個(gè)遺憾,考慮到這是一個(gè)相對(duì)簡(jiǎn)單的操作。第二點(diǎn),我們的代碼假設(shè)了列表解析的知識(shí),這不應(yīng)該被認(rèn)為是理所當(dāng)然的。第三點(diǎn),代碼涉及字符串操作,這是容易出錯(cuò)的。最重要的是,代碼不是很簡(jiǎn)潔。

相反,如果我們使用pathlib模塊,我們的代碼會(huì)簡(jiǎn)單得多。正如我們所提到的,pathlib提供了一種面向?qū)ο蟮姆椒▉?lái)處理文件系統(tǒng)路徑。

from pathlib import Path

# Create a path object
dir_path = Path(dir_path)

# Find all text files inside a directory
files = list(dir_path.glob("*.png"))

這種面向?qū)ο蟮木幊虈@對(duì)象及其交互來(lái)組織代碼,從而產(chǎn)生更多的模塊化、可重用和可維護(hù)的代碼。

在Python中使用Path對(duì)象

pathlib庫(kù)圍繞所謂的Path對(duì)象展開(kāi),paths對(duì)象是一種以結(jié)構(gòu)化和平臺(tái) 獨(dú)立的方式。

我們使用以下代碼行將Path類(lèi)從pathlib模塊引入到當(dāng)前的命名空間中:

from pathlib import Path

從pathlib調(diào)用Path類(lèi)后,我們可以通過(guò)多種方式創(chuàng)建Path對(duì)象,包括從字符串、從其他Path對(duì)象、從當(dāng)前工作目錄和從主目錄。

從字符串創(chuàng)建路徑對(duì)象

我們可以通過(guò)將表示文件系統(tǒng)路徑的字符串傳遞給變量來(lái)創(chuàng)建Path對(duì)象。這將文件路徑的字符串表示形式轉(zhuǎn)換為Path對(duì)象。

file_path_str = "data/union_data.csv"

data_path = Path(file_path_str)

從其他路徑對(duì)象創(chuàng)建

現(xiàn)有的Path對(duì)象可以用作創(chuàng)建新路徑的構(gòu)建塊。

我們通過(guò)將基本路徑、數(shù)據(jù)目錄和文件名組合成一個(gè)文件路徑來(lái)實(shí)現(xiàn)這一點(diǎn)。我們必須記住在適當(dāng)?shù)牡胤绞褂谜备軄?lái)擴(kuò)展Path對(duì)象。

base_path = Path("/home/user")
data_dir = Path("data")

# Combining multiple paths
file_path = base_path / data_dir / "prices.csv"  
print(file_path)

輸出

'/home/user/data/prices.csv'

從當(dāng)前工作目錄創(chuàng)建路徑對(duì)象

這里我們使用Path.cwd()方法將當(dāng)前工作目錄分配給cwd變量。然后,我們可以檢索腳本運(yùn)行的當(dāng)前工作目錄的路徑。

cwd = Path.cwd()

???????print(cwd)

輸出

'/home/bexgboost/articles/2024/4_april/8_pathlib'

從主工作目錄創(chuàng)建路徑對(duì)象

我們可以通過(guò)將主目錄與其他子目錄組合來(lái)構(gòu)造路徑。在這里,我們將主目錄與子目錄“downloads”和“projects”合并。"

home = Path.home()

???????home / "downloads" / "projects"

重要提示:Path類(lèi)本身不執(zhí)行任何文件系統(tǒng)操作,如路徑驗(yàn)證、創(chuàng)建目錄或文件。它被設(shè)計(jì)用于表示和操作路徑。要與文件系統(tǒng)進(jìn)行實(shí)際交互(檢查是否存在,閱讀/寫(xiě)入文件),我們必須使用Path對(duì)象的特殊方法,對(duì)于某些高級(jí)情況,請(qǐng)從os模塊獲得幫助。

在Python中使用Path組件

文件路徑屬性是文件路徑的各種屬性和組件,有助于識(shí)別和管理文件系統(tǒng)中的文件和目錄。就像物理地址有不同的部分,如街道號(hào)碼,城市,國(guó)家和郵政編碼,文件系統(tǒng)路徑可以分解為更小的組件。pathlib允許我們通過(guò)點(diǎn)表示法使用路徑屬性訪(fǎng)問(wèn)和操作這些組件。

使用根目錄

根目錄是文件系統(tǒng)中最頂層的目錄。在類(lèi)Unix系統(tǒng)中,它由正斜杠(/)表示。在Windows中,它通常是一個(gè)驅(qū)動(dòng)器號(hào)后跟一個(gè)冒號(hào),如C:。

image_file = home / "downloads" / "midjourney.png"

image_file.root

輸出

'/'

使用父目錄

父級(jí)包含當(dāng)前文件或目錄。它相對(duì)于當(dāng)前目錄或文件高一級(jí)。

image_file.parent

輸出

PosixPath('/home/bexgboost/downloads')

使用文件名

此屬性以字符串形式返回整個(gè)文件名,包括擴(kuò)展名。

image_file.name

輸出

'midjourney.png'

使用文件后綴

suffix屬性以字符串形式返回文件擴(kuò)展名,包括點(diǎn)(如果沒(méi)有擴(kuò)展名,則返回空字符串)。

image_file.suffix

輸出

'.png'

注意:在Mac上,文件路徑區(qū)分大小寫(xiě),因此/Users/username/Documents和/users/username/documents會(huì)有所不同。

.parts屬性

我們可以使用.parts屬性將Path對(duì)象拆分為它的組件。

image_file.parts

輸出

('/', 'home', 'bexgboost', 'downloads', 'midjourney.png')

使用pathlib的常見(jiàn)路徑操作

以下是一些使用 pathlib 進(jìn)行常見(jiàn)路徑操作的示例:

1.創(chuàng)建路徑對(duì)象:

from pathlib import Path
p = Path("/usr/bin")

2.路徑拼接:

new_path = p / "local" / "script.py"

3.獲取文件擴(kuò)展名:

extension = new_path.suffix

4.更改文件擴(kuò)展名:

new_extension = new_path.with_suffix(".txt")

5.檢查路徑是否存在:

exists = new_path.exists()

6.檢查路徑是否為文件:

is_file = new_path.is_file()

7.檢查路徑是否為目錄:

is_dir = new_path.is_dir()

8.讀取文件內(nèi)容:

with new_path.open('r') as file:
    content = file.read()

9.寫(xiě)入文件內(nèi)容:

with new_path.open('w') as file:
    file.write("Hello, world!")

10.刪除文件:

new_path.unlink()

11.創(chuàng)建目錄:

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

12.刪除目錄:

new_path.rmdir()

14.獲取目錄中的文件和子目錄:

items = list(new_path.iterdir())

15.絕對(duì)路徑:

absolute_path = new_path.absolute()

16.相對(duì)路徑:

relative_path = new_path.relative_to("/usr")

17.路徑解析:

parts = new_path.parts
drive, root, parts = new_path.drive, new_path.root, new_path.parts

18.路徑字符串轉(zhuǎn)換:

path_str = str(new_path)

19.遍歷目錄樹(shù):

for child in new_path.rglob('*.py'):
    print(child)

這些是 pathlib 模塊提供的一些基本操作。pathlib 模塊使得文件系統(tǒng)路徑的操作更加直觀和易于管理。

到此這篇關(guān)于Python使用pathlib進(jìn)行文件系統(tǒng)操作的文章就介紹到這了,更多相關(guān)Python pathlib文件系統(tǒng)操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)的字典值比較功能示例

    Python實(shí)現(xiàn)的字典值比較功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的字典值比較功能,可實(shí)現(xiàn)針對(duì)字典格式數(shù)據(jù)的判斷、比較功能,涉及Python字典格式數(shù)據(jù)的遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python的numpy和pandas簡(jiǎn)介及使用場(chǎng)景

    Python的numpy和pandas簡(jiǎn)介及使用場(chǎng)景

    NumPy提供高效的多維數(shù)組操作和數(shù)學(xué)函數(shù),而Pandas建立在NumPy之上,專(zhuān)注于表格數(shù)據(jù)的處理和高級(jí)分析,本文給大家介紹Python的numpy和pandas簡(jiǎn)介及使用場(chǎng)景,感興趣的朋友一起看看吧
    2025-09-09
  • Python?Playwright的使用詳解

    Python?Playwright的使用詳解

    本篇博客為大家介紹一款新的自動(dòng)化測(cè)試工具,效果類(lèi)似?selenium,但是這個(gè)模塊年輕。模塊名稱(chēng)為?playwright-python,微軟開(kāi)源的,是針對(duì)?Python?語(yǔ)言的純自動(dòng)化工具,感興趣的可以了解一下
    2022-10-10
  • Python matplotlib修改默認(rèn)字體的操作

    Python matplotlib修改默認(rèn)字體的操作

    這篇文章主要介紹了Python matplotlib修改默認(rèn)字體的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • python 字典(dict)遍歷的四種方法性能測(cè)試報(bào)告

    python 字典(dict)遍歷的四種方法性能測(cè)試報(bào)告

    本文主要是針對(duì)Python的字典dict遍歷的4種方法進(jìn)行了性能測(cè)試,以便分析得出效率最高的一種方法
    2014-06-06
  • Python中搜索和替換文件中的文本的實(shí)現(xiàn)(四種)

    Python中搜索和替換文件中的文本的實(shí)現(xiàn)(四種)

    本文主要介紹了Python中搜索和替換文件中的文本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • windows下Anaconda的安裝與配置正解(Anaconda入門(mén)教程)

    windows下Anaconda的安裝與配置正解(Anaconda入門(mén)教程)

    最近很多朋友學(xué)習(xí)python,很多朋友也推薦使用anaconda這個(gè)工具,但安裝以后也不會(huì)使用,這里腳本之家小編就為大家整理一下比較詳細(xì)的教程,方便自己也方便需要的朋友,希望大家以后多多支持腳本之家
    2018-04-04
  • 創(chuàng)建SparkSession和sparkSQL的詳細(xì)過(guò)程

    創(chuàng)建SparkSession和sparkSQL的詳細(xì)過(guò)程

    SparkSession 是 Spark SQL 的入口,Builder 是 SparkSession 的構(gòu)造器。 通過(guò) Builder, 可以添加各種配置,并通過(guò) stop 函數(shù)來(lái)停止 SparkSession,本文給大家分享創(chuàng)建SparkSession和sparkSQL的詳細(xì)過(guò)程,一起看看吧
    2021-08-08
  • python內(nèi)置函數(shù)breakpoint()與bytearray()示例詳解

    python內(nèi)置函數(shù)breakpoint()與bytearray()示例詳解

    本文給大家分享的是python內(nèi)置函數(shù)breakpoint()與bytearray()的相關(guān)資料,并給大家附上了詳細(xì)代碼,有需要的小伙伴可以參考下
    2017-04-04
  • 基于Python制作炸金花游戲的過(guò)程詳解

    基于Python制作炸金花游戲的過(guò)程詳解

    《詐金花》又叫三張牌,是在全國(guó)廣泛流傳的一種民間多人紙牌游戲。比如JJ比賽中的詐金花(贏三張),具有獨(dú)特的比牌規(guī)則。本文江將通過(guò)Python語(yǔ)言實(shí)現(xiàn)這一游戲,需要的可以參考一下
    2022-02-02

最新評(píng)論

东丽区| 宿迁市| 云霄县| 沽源县| 扬州市| 西盟| 留坝县| 团风县| 全椒县| 静乐县| 上栗县| 安化县| 萨迦县| 仲巴县| 柳州市| 石景山区| 广饶县| 偃师市| 措勤县| 信阳市| 古蔺县| 南城县| 搜索| 邵阳市| 灵山县| 临澧县| 辛集市| 阳朔县| 奇台县| 聂拉木县| 平原县| 垦利县| 洛扎县| 扎赉特旗| 日土县| 临江市| 阳新县| 台中县| 沾化县| 东阿县| 翁源县|