【每天学习一点点】使用Python的pathlib模块分割文件路径

使用Python的pathlib模块分割文件路径

pathlib模块(Python 3.4+)提供了面向对象的文件系统路径操作方式,比传统的os.path更加直观和易用。以下是使用pathlib分割文件路径的几种方法:

基本路径分割

python 复制代码
from pathlib import Path

# 创建一个Path对象
path = Path('/home/user/docs/report.txt')

# 获取路径的不同部分
print(path.parent)    # 父目录: /home/user/docs
print(path.name)      # 文件名(包含后缀): report.txt
print(path.stem)      # 文件名(不包含后缀): report
print(path.suffix)    # 文件后缀: .txt
print(path.suffixes)  # 所有后缀列表: ['.txt']

多级路径处理

python 复制代码
path = Path('/usr/local/bin/python3')

# 获取路径的各个部分
print(path.parts)  # ('/', 'usr', 'local', 'bin', 'python3')

# 遍历父目录
for parent in path.parents:
    print(parent)
# 输出:
# /usr/local/bin
# /usr/local
# /usr
# /

处理相对路径

python 复制代码
rel_path = Path('docs/../images/photo.jpg')

# 解析相对路径
print(rel_path.resolve())  # 绝对路径,如 /home/user/images/photo.jpg

# 获取纯名称部分
print(rel_path.name)       # photo.jpg

合并路径

python 复制代码
base = Path('/home/user')
subpath = Path('docs/report.txt')

# 使用 / 运算符合并路径
full_path = base / subpath
print(full_path)  # /home/user/docs/report.txt

处理多个后缀的文件

python 复制代码
archive = Path('backup.tar.gz')

print(archive.suffix)    # .gz (只返回最后一个后缀)
print(archive.suffixes)  # ['.tar', '.gz']
print(archive.stem)      # backup.tar (不包含最后一个后缀)

检查路径属性

python 复制代码
path = Path('/home/user/file.txt')

print(path.is_file())     # 是否是文件
print(path.is_dir())      # 是否是目录
print(path.exists())      # 路径是否存在

pathlib模块的这些方法使得路径操作更加直观和安全,特别是在跨平台开发时,它能自动处理不同操作系统的路径分隔符问题。

相关推荐
Brian Xia1 天前
Nano-vLLM 源码分析(一) - 课程大纲
python·ai
Jinkxs1 天前
Java 架构 02:DDD 领域模型设计实战(限界上下文划分)
java·开发语言·架构
猪在黑魔纹里1 天前
解决VSCode无法高亮、解析numpy中的部分接口(如pi、deg2rad)
ide·vscode·python·numpy
走在路上的菜鸟1 天前
Android学Dart学习笔记第十三节 注解
android·笔记·学习·flutter
爱笑的眼睛111 天前
文本分类的范式演进:从统计概率到语言模型提示工程
java·人工智能·python·ai
星川皆无恙1 天前
基于知识图谱+深度学习的大数据NLP医疗知识问答可视化系统(全网最详细讲解及源码/建议收藏)
大数据·人工智能·python·深度学习·自然语言处理·知识图谱
Tipriest_1 天前
旋转矩阵,齐次变换矩阵,欧拉角,四元数等相互转换的常用代码C++ Python
c++·python·矩阵
毕设源码-钟学长1 天前
【开题答辩全过程】以 基于PHP的家常菜谱教程网站为例,包含答辩的问题和答案
开发语言·php
周杰伦_Jay1 天前
【Go/Python/Java】基础语法+核心特性对比
java·python·golang
sszdlbw1 天前
后端springboot框架入门学习--第一篇
java·spring boot·学习