`from pathlib import Path`模块,文件系统路径处理

from pathlib import Path模块,文件系统路径处理

pathlib 是一个 Python 标准库,它提供了一种面向对象的方法来处理文件系统路径。它提供了许多类,但是最核心的是 Path 类,这是所有文件系统路径都应使用的类。

  1. 创建Path对象

    使用 Path() 构造函数来创建一个 Path 对象表示文件系统上的路径。

    python 复制代码
    from pathlib import Path
    
    p = Path('/home/user/Documents')
    print(p)

    输出:

    tex 复制代码
    \home\user\Documents
  2. 路径拼接

    通过 / 操作符可以方便地构建子路径。

    python 复制代码
    sub_path = p / 'project' / 'file.txt'

    输出:

    tex 复制代码
    \home\user\Documents\project\file.txt
  3. 获取路径
    Path.cwd(): 返回当前工作目录。

    python 复制代码
    from pathlib import Path
    p = Path.cwd()  # 输出C:\Users\me\study

    虽然输出的是字符串,但实际上是一个# WindowsPath('C:\Users\me\study')对象。显示内容由 Path 类的 __repr__ 定义。

    如果你只想得到字符串表示,不想要 WindowsPath 对象,可以用str()转化:

    python 复制代码
    str(pathlib.Path.cwd())
  4. 路径的各部分

    • Path.parts: 返回一个包含路径各部分的元组。
    • Path.drive: 返回驱动器的字母,比如 C:(主要是Windows相关)。
    • Path.root: 返回路径的根部分,例如 \
    • Path.anchor: 返回路径的组合根和驱动器(如果有的话),等于 drive + root
python 复制代码
# 创建Path实例
p = Path('/usr/bin/python3/text.txt')

# 获取各部分
print(p.parts)            # 输出: ('\\', 'usr', 'bin', 'python3', 'text.txt')
print(p.drive)            # 在Unix上输出: ''
print(p.root)             # 输出: '\'
print(p.anchor)           # 输出: '\'

# 创建Path实例
p = Path(r'E:\2023-10\test\main.py')

# 获取各部分
print(p.parts)            # 输出: ('E:\\', '2023-10', 'test', 'main.py')
print(p.drive)            # 在Unix上输出: 'E:'
print(p.root)             # 输出: '\'
print(p.anchor)           # 输出: 'E:\'
  1. 路径的属性

    • Path.parent: 返回路径的父目录。要获得上级的上级目录,可以连续调用,例如 path.parent.parent
    • Path.parents: 返回一个由路径的逻辑父目录组成的可迭代对象。
    • Path.name: 返回路径中最后一部分的名称,这通常是文件或目录的名称。
    • Path.stem: 返回路径最后一部分的基础名称,即不带后缀。
    • Path.suffix: 返回路径最后一部分的扩展名。
    • Path.suffixes: 返回路径中最后一部分的所有扩展名,这在处理有多个扩展名的文件时很有用。
    python 复制代码
    # 创建Path实例
    p = Path(r'E:/2023-10/test/main.py')
    
    # 获取路径属性
    print(p.parent)           # 输出: E:\2023-10\test
    print(list(p.parents))    # 输出: [WindowsPath('E:/2023-10/test'), WindowsPath('E:/2023-10'), WindowsPath('E:/')]
    print(p.name)             # 输出: 'main.py'
    print(p.stem)             # 输出: 'main' (如果是文件名为'main.tar.gz',则输出'main.tar')
    print(p.suffix)           # 输出: '.py' (如果是文件名为'main.tar.gz',则输出'.gz')
    print(p.suffixes)         # 输出: ['.py'] (如果是文件名为'main.tar.gz',则输出['.tar', '.gz'])
  2. 绝对路径与相对路径

    • Path.resolve(): 解析路径,删除任何符号链接(如果在Unix上),并返回绝对路径。
    • Path.is_absolute(): 检查路径是否为绝对路径。
    • Path.relative_to(*other): 计算相对于另一个路径的相对路径。
python 复制代码
# 创建Path实例
p = Path('E:/2023-10/test/main.py')

# 绝对路径与相对路径
print(p.resolve())        # 输出绝对路径
print(p.is_absolute())    # 输出: True
# 假设当前目录是 E:/2023-10
print(p.relative_to('E:/2023-10'))  # 输出: 'test\main.py'
  1. 路径存在性和类型

    • Path.exists(): 检查路径是否存在。
    • Path.is_dir(): 检查路径是否是一个目录。
    • Path.is_file(): 检查路径是否是一个文件。
    • Path.is_symlink(): 检查路径是否是一个符号链接。
    python 复制代码
    # 路径存在性和类型
    print(p.exists())         # 输出: True 或 False,取决于路径是否存在
    print(p.is_dir())         # 输出: False
    print(p.is_file())        # 输出: True 或 False,取决于路径是否为文件
    print(p.is_symlink())     # 输出: False
  2. 其他

    • Path.with_name(name): 返回与当前路径具有不同文件/目录名称的新路径。
    • Path.with_suffix(suffix): 返回与当前路径具有不同文件后缀的新路径。
    python 复制代码
    # 创建Path实例
    p = Path('E:/2023-10/test/main.py')
    
    # 更改名称和后缀
    new_path = p.with_name('python3.8')
    print(new_path)           # 输出: E:\2023-10\test\python3.8
    new_suffix_path = p.with_suffix('.text')
    print(new_suffix_path)    # 输出: E:\2023-10\test\main.py
相关推荐
LZXCyrus13 分钟前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
Enougme16 分钟前
Appium常用的使用方法(一)
python·appium
懷淰メ21 分钟前
PyQt飞机大战游戏(附下载地址)
开发语言·python·qt·游戏·pyqt·游戏开发·pyqt5
hummhumm35 分钟前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
hummhumm1 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
每天吃饭的羊1 小时前
python里的数据结构
开发语言·python
卡卡_R-Python1 小时前
UCI Heart Disease Data Set—— UCI 心脏病数据集介绍
python·plotly·django·virtualenv·pygame
饮长安千年月2 小时前
浅谈就如何解出Reverse-迷宫题之老鼠走迷宫的一些思考
python·网络安全·逆向·ctf
好看资源平台2 小时前
网络爬虫——爬虫项目案例
爬虫·python
豌豆花下猫2 小时前
Python 潮流周刊#78:async/await 是糟糕的设计(摘要)
后端·python·ai