广告位联系
返回顶部
分享到

python中pathlib面向对象的文件系统路径

python 来源:互联网 作者:佚名 发布时间:2024-12-26 22:31:36 人浏览
摘要

pathlib:面向对象的文件系统路径 pathlib官方介绍: Python3.4+内置的标准库,Object-oriented filesystem paths(面向对象的文件系统路径) 1. 使用示例 1.1 最常用:获取项目目录 os.path方法 1 2 3 4 import os p

pathlib:面向对象的文件系统路径

pathlib官方介绍: Python3.4+内置的标准库,Object-oriented filesystem paths(面向对象的文件系统路径)

1. 使用示例

1.1 最常用:获取项目目录

os.path方法

1

2

3

4

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方法

1

2

3

4

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方法

1

2

3

4

5

file_list = []

for file in os.listdir(csv_dir):

    if not file.endswith('.csv'):

        continue

    file_list.append(file)

pathlib方法

1

2

3

from pathlib import Path

csv_dir = Path(csv_dir)

file_list = csv_dir.glob('*.csv')

1.3 递归目录下的所有文件

os方法

os.walk方法

1

2

3

4

5

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))

1

2

3

# glob方法

from glob import glob

file_list = glob('/Users/root/Code/project/**/*.py', recursive=True)

pathlib方法

1

file_list = csv_dir.rglob('*.csv')  # 生成器对象

2. 优势对比

1、当需要获取多个层级目录时,os.path需要使用嵌套的写法,而pathlib则是正常的链式调用。pathlib的使用更加友好,使得路径对象更加明确。
2、os.path只用于基本的路径处理,如果需要其他操作如重命名/新建/复制文件等,需要用os下的其他模块。而pathlib可以用于处理路径相关操作,并且是一个轻量级的库。
3、os.path操作的路径时字符串,而pathlib操作的路径时对象。提供了对资源路径和资源命名结构的通用抽象。它把文件系统接口从os模块中隔离出来,打开了从应用层配置文件系统的大门。

换句话说,pathlib.Path这个接口代表的可以不仅是os的资源路径,还可以是HDFS的资源路径,RESTful API的资源路径。

3. 基本介绍

1、官网上给出的该模块提供表示文件系统路径的类,如下,其语义适用于不同的操作系统,路径类被分为提供纯计算操作而没有 I/O 的纯路径,以及从纯路径继承而来但提供 I/O 操作的具体路径。一般情况下,直接使用Path即可。

2、Path属性

4. 常见用法

获取当前文件绝对路径

1

2

3

4

from pathlib import Path

path = Path(__file__).resolve()

path

>>> /Users/root/Code/project/conf/path_conf.py

获取当前文件的上级目录

1

2

3

4

5

6

from pathlib import Path

path = Path(__file__).resolve()

path.parent

>>> /Users/root/Code/project/conf

path.parent.parent

>>> /Users/root/Code/project

获取文件名

1

2

3

4

5

6

7

8

from pathlib import Path

path = Path(__file__).resolve()

path.name

>>> path_conf.py

path.stem

>>> path_conf

path.suffix

>>> .py

修改文件名,修改后缀

1

2

3

4

from pathlib import Path

file = Path('data.csv')

new_file = file.with_name('result.csv')

new_file = file.with_suffix('.txt')

路径拼接

1

2

3

4

5

6

7

8

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')

路径判断

1

2

3

4

5

from pathlib import Path

path = Path(__file__).resolve()

path.is_file()  # 是否为文件

path.is_dir()  # 是否为目录

path.exists()  # 是否存在

文件操作

1

2

3

4

5

from pathlib import Path

file = Path(__file__).resolve()

file.touch()  # 新建文件

file.replace('../data.csv')  # 移动文件

file.unlink()  # 删除文件

读取文件

1

2

3

4

5

6

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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 基于Python实现web网页内容爬取的方法

    基于Python实现web网页内容爬取的方法
    在日常学习和工作中,我们经常会遇到需要爬取网页内容的需求,今天就如何基于Python实现web网页内容爬取进行讲解。 1. 网页分析 用Chrom
  • 使用Python实现屏幕录制与键盘监听功能
    在Python中,我们可以借助多个强大的库来实现丰富的功能,比如屏幕录制和键盘监听。今天,我们将通过结合PIL(Python Imaging Library的分支
  • python中pathlib面向对象的文件系统路径

    python中pathlib面向对象的文件系统路径
    pathlib:面向对象的文件系统路径 pathlib官方介绍: Python3.4+内置的标准库,Object-oriented filesystem paths(面向对象的文件系统路径) 1. 使用示例
  • Python实现中文字转中文语音

    Python实现中文字转中文语音
    我们本文中采用的开发平台是Visual Studio 2022,采用其他平台的开发工具也是可以的 1.首先我们先新建一个Python应用程序 2.我在这里选择管理
  • 基于Python进行定时任务管理封装

    基于Python进行定时任务管理封装
    效果图 主逻辑代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
  • Python中不可忽视的docstring妙用
    在Python编程中,代码的可读性和可维护性至关重要。除了清晰的命名和结构良好的代码外,良好的文档字符串(docstring)也是确保代码易于
  • Python处理浮点数的实用技巧
    四舍五入是一种常见的数学操作,它用于将数字舍入到指定的精度。Python 提供了多种方法来实现四舍五入操作,从基本的 round 函数到高级的
  • 一文带你解锁Python文件匹配技巧
    在日常的文件操作和数据处理中,文件匹配是一个非常常见的任务。Python 提供了丰富的库和工具来实现文件匹配,这些工具不仅功能强大,
  • Python langchain ReAct使用范例介绍

    Python langchain ReAct使用范例介绍
    ReAct: Reasoning + Acting ,ReAct Prompt 由 few-shot task-solving trajectories 组成,包括人工编写的文本推理过程和动作,以及对动作的环境观察。 1. 范例
  • Python一行代码实现打开各种类型的文件
    在处理大量文件时,手动一个个打开是不是很麻烦?或者你正在开发一个自动化工具,需要能够自动打开某些文件。这时候,Python的os.star
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计