欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中pathlib 面向?qū)ο蟮奈募到y(tǒng)路徑

 更新時(shí)間:2024年12月26日 10:58:29   作者:LKIDTI數(shù)據(jù)  
文章介紹了Python 3.4+內(nèi)置的標(biāo)準(zhǔn)庫pathlib,該庫提供面向?qū)ο蟮奈募到y(tǒng)路徑處理,通過pathlib,可以更方便地進(jìn)行路徑操作,感興趣的朋友一起看看吧

pathlib:面向?qū)ο蟮奈募到y(tǒng)路徑

pathlib官方介紹: Python3.4+內(nèi)置的標(biāo)準(zhǔn)庫,Object-oriented filesystem paths(面向?qū)ο蟮奈募到y(tǒng)路徑)

1. 使用示例

1.1 最常用:獲取項(xiàng)目目錄

os.path方法

import os
project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(project_dir)  # /Users/root/Code/project
print(type(project_dir))  # <class 'str'>

pathlib方法

from pathlib import Path
project_dir = Path(__file__).resolve().parent.parent
print(project_dir)  # /Users/root/Code/project
print(type(project_dir))  # <class 'pathlib.PosixPath'>

1.2 遍歷一個(gè)目錄下指定文件

os方法

file_list = []
for file in os.listdir(csv_dir):
    if not file.endswith('.csv'):
        continue
    file_list.append(file)

pathlib方法

from pathlib import Path
csv_dir = Path(csv_dir)
file_list = csv_dir.glob('*.csv')

1.3 遞歸目錄下的所有文件

os方法

os.walk方法

file_list = []
for root, dirs, files in os.walk('/Users/root/Code/project'):
  for f in files:
    if f.endswith('.py'):
      file_list.append(os.path.join(root, f))
# glob方法
from glob import glob
file_list = glob('/Users/root/Code/project/**/*.py', recursive=True)

pathlib方法

file_list = csv_dir.rglob('*.csv')  # 生成器對(duì)象

2. 優(yōu)勢(shì)對(duì)比

1、當(dāng)需要獲取多個(gè)層級(jí)目錄時(shí),os.path需要使用嵌套的寫法,而pathlib則是正常的鏈?zhǔn)秸{(diào)用。pathlib的使用更加友好,使得路徑對(duì)象更加明確。
2、os.path只用于基本的路徑處理,如果需要其他操作如重命名/新建/復(fù)制文件等,需要用os下的其他模塊。而pathlib可以用于處理路徑相關(guān)操作,并且是一個(gè)輕量級(jí)的庫。
3、os.path操作的路徑時(shí)字符串,而pathlib操作的路徑時(shí)對(duì)象。提供了對(duì)資源路徑和資源命名結(jié)構(gòu)的通用抽象。它把文件系統(tǒng)接口從os模塊中隔離出來,打開了從應(yīng)用層配置文件系統(tǒng)的大門。

換句話說,pathlib.Path這個(gè)接口代表的可以不僅是os的資源路徑,還可以是HDFS的資源路徑,RESTful API的資源路徑。

3. 基本介紹

1、官網(wǎng)上給出的該模塊提供表示文件系統(tǒng)路徑的類,如下,其語義適用于不同的操作系統(tǒng),路徑類被分為提供純計(jì)算操作而沒有 I/O 的純路徑,以及從純路徑繼承而來但提供 I/O 操作的具體路徑。一般情況下,直接使用Path即可。

2、Path屬性

4. 常見用法

獲取當(dāng)前文件絕對(duì)路徑

from pathlib import Path
path = Path(__file__).resolve()
path
>>> /Users/root/Code/project/conf/path_conf.py

獲取當(dāng)前文件的上級(jí)目錄

from pathlib import Path
path = Path(__file__).resolve()
path.parent
>>> /Users/root/Code/project/conf
path.parent.parent
>>> /Users/root/Code/project

獲取文件名

from pathlib import Path
path = Path(__file__).resolve()
path.name
>>> path_conf.py
path.stem
>>> path_conf
path.suffix
>>> .py

修改文件名,修改后綴

from pathlib import Path
file = Path('data.csv')
new_file = file.with_name('result.csv')
new_file = file.with_suffix('.txt')

路徑拼接

from pathlib import Path
root = Path(__file__).resolve().parent
# 方式1
conf_file = root / 'conf/path_conf.py'
# 方式2
conf_file = root / Path('conf/path_conf.py')
# 方式3
conf_file = root.joinpath('conf/path_conf.py')

路徑判斷

from pathlib import Path
path = Path(__file__).resolve()
path.is_file()  # 是否為文件
path.is_dir()  # 是否為目錄
path.exists()  # 是否存在

文件操作

from pathlib import Path
file = Path(__file__).resolve()
file.touch()  # 新建文件
file.replace('../data.csv')  # 移動(dòng)文件
file.unlink()  # 刪除文件

讀取文件

file = Path('../data/1.csv')
data = file.read_text()  # 讀取文件
data = file.write_text()  # 寫入文件
# 也可以作為普通路徑使用
with open(file, 'r') as f:
  data = f.read()

5. 參考資料

https://docs.python.org/zh-cn/3/library/pathlib.html
https://www.cnblogs.com/heniu/p/12872604.html
https://zhuanlan.zhihu.com/p/87940289
https://zhuanlan.zhihu.com/p/33524938
https://www.jianshu.com/p/a820038e65c3
https://cloud.tencent.com/developer/article/1640696

相關(guān)文章

  • python裝飾器的特性原理詳解

    python裝飾器的特性原理詳解

    這篇文章主要介紹了python裝飾器的特性原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 詳解如何利用Python進(jìn)行客戶分群分析

    詳解如何利用Python進(jìn)行客戶分群分析

    每個(gè)電子商務(wù)數(shù)據(jù)分析師必須掌握的一項(xiàng)數(shù)據(jù)聚類技能,如果你是一名在電子商務(wù)公司工作的數(shù)據(jù)分析師,從客戶數(shù)據(jù)中挖掘潛在價(jià)值,來提高客戶留存率很可能就是你的工作任務(wù)之一。這篇就來告訴你如何將客戶分成不同的群組,并在一段時(shí)間內(nèi)觀察每個(gè)群組的留存率
    2023-02-02
  • Python缺少庫IPython的解決辦法步驟

    Python缺少庫IPython的解決辦法步驟

    在使用Python編寫程序過程中,有時(shí)我們會(huì)遇到一些錯(cuò)誤信息,提示我們當(dāng)前環(huán)境缺少某些依賴庫文件,這篇文章主要給大家介紹了關(guān)于Python缺少庫IPython的解決辦法步驟,需要的朋友可以參考下
    2023-12-12
  • Python爬蟲技術(shù)

    Python爬蟲技術(shù)

    本文將要介紹的是python爬蟲基礎(chǔ)知識(shí),感興趣的小伙伴一起來學(xué)習(xí)吧
    2021-08-08
  • 一行代碼讓 Python 的運(yùn)行速度提高100倍

    一行代碼讓 Python 的運(yùn)行速度提高100倍

    python一直被病垢運(yùn)行速度太慢,但是實(shí)際上python的執(zhí)行效率并不慢,慢的是python用的解釋器Cpython運(yùn)行效率太差。這篇文章主要介紹了一行代碼讓 Python 的運(yùn)行速度提高100倍的相關(guān)知識(shí),需要的朋友可以參考下
    2018-10-10
  • 基于Python的OCR實(shí)現(xiàn)示例

    基于Python的OCR實(shí)現(xiàn)示例

    這篇文章主要介紹了基于Python的OCR實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python打開文件并獲取文件相關(guān)屬性的方法

    python打開文件并獲取文件相關(guān)屬性的方法

    這篇文章主要介紹了python打開文件并獲取文件相關(guān)屬性的方法,涉及Python操作文件的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • 對(duì)python中矩陣相加函數(shù)sum()的使用詳解

    對(duì)python中矩陣相加函數(shù)sum()的使用詳解

    今天小編就為大家分享一篇對(duì)python中矩陣相加函數(shù)sum()的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python目標(biāo)檢測(cè)SSD算法訓(xùn)練部分源碼詳解

    python目標(biāo)檢測(cè)SSD算法訓(xùn)練部分源碼詳解

    這篇文章主要為大家介紹了python目標(biāo)檢測(cè)SSD算法訓(xùn)練部分源碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python 通過pip安裝Django詳細(xì)介紹

    Python 通過pip安裝Django詳細(xì)介紹

    這篇文章主要介紹了Python 通過pip安裝Django詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評(píng)論