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

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

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

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 最常用:獲取項目目錄

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 遍歷一個目錄下指定文件

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')  # 生成器對象

2. 優(yōu)勢對比

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

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

3. 基本介紹

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

2、Path屬性

4. 常見用法

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

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

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

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')  # 移動文件
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 實現(xiàn)在文件中的每一行添加一個逗號

    Python 實現(xiàn)在文件中的每一行添加一個逗號

    下面小編就為大家分享一篇Python 實現(xiàn)在文件中的每一行添加一個逗號,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python 讀寫文件和file對象的方法(推薦)

    Python 讀寫文件和file對象的方法(推薦)

    下面小編就為大家?guī)硪黄狿ython 讀寫文件和file對象的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • python獲取中文字符串長度的方法

    python獲取中文字符串長度的方法

    今天小編就為大家分享一篇python獲取中文字符串長度的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python opencv 批量改變圖片的尺寸大小的方法

    python opencv 批量改變圖片的尺寸大小的方法

    這篇文章主要介紹了python opencv 批量改變圖片的尺寸大小的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 詳解Python list 與 NumPy.ndarry 切片之間的對比

    詳解Python list 與 NumPy.ndarry 切片之間的對比

    這篇文章主要介紹了詳解Python list 與 NumPy.ndarry 切片之間的區(qū)別的相關(guān)資料,list 切片返回的是不原數(shù)據(jù),對新數(shù)據(jù)的修改不會影響原數(shù)據(jù)而NumPy.ndarry 的切片返回的是原數(shù)據(jù)需要的朋友可以參考下
    2017-07-07
  • Python中函數(shù)參數(shù)匹配模型詳解

    Python中函數(shù)參數(shù)匹配模型詳解

    這篇文章主要介紹了Python函數(shù)參數(shù)匹配模型,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Python?OpenCV的基本使用及相關(guān)函數(shù)

    Python?OpenCV的基本使用及相關(guān)函數(shù)

    這篇文章主要介紹了Python-OpenCV的基本使用和相關(guān)函數(shù)介紹,主要包括圖像的讀取保存圖像展示問題,結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • tensorflow之讀取jpg圖像長和寬實例

    tensorflow之讀取jpg圖像長和寬實例

    這篇文章主要介紹了tensorflow之讀取jpg圖像長和寬實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 一篇文章帶你了解kali局域網(wǎng)攻擊

    一篇文章帶你了解kali局域網(wǎng)攻擊

    這篇文章主要給大家介紹了kali的局域網(wǎng)攻擊,小編覺得這篇文章還是不錯的,使用起來也是非常方便的,需要的朋友可以參考下
    2021-08-08
  • python如何基于redis實現(xiàn)ip代理池

    python如何基于redis實現(xiàn)ip代理池

    這篇文章主要介紹了python如何基于redis實現(xiàn)ip代理池,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01

最新評論

依兰县| 金阳县| 清流县| 合川市| 遂昌县| 盐城市| 扶余县| 多伦县| 友谊县| 吴桥县| 会宁县| 顺义区| 西畴县| 来凤县| 涟水县| 门源| 惠水县| 吐鲁番市| 盐山县| 盐边县| 开化县| 合水县| 昌邑市| 社会| 汽车| 沂水县| 定西市| 青阳县| 石嘴山市| 咸宁市| 涿州市| 安陆市| 通渭县| 新巴尔虎右旗| 海阳市| 元阳县| 青河县| 翁牛特旗| 仪陇县| 葵青区| 天镇县|