Pathlib库

虽然经常使用,但还没有系统的认识

Y:相比于老式的 os.path(把路径当成"字符串"拼接),pathlib 把路径当成对象 处理,代码更优雅、易读。

使用代码

python 复制代码
from pathlib import Path

# pwd
cwd = Path.cwd()
print(cwd)

#~
home = Path.home()
print(home)

#直接创建一个路径对象
p = Path(f"{home}")
print(p)

#拼接路径
dir = p/"python_project"
print(dir)
file_path = dir/"pathlib_test"/"diff.py"
print(file_path)


print(file_path.name) # 文件全名
print(file_path.stem) #去除后缀的文件名
print(file_path.suffix) #后缀
print(f"{file_path.parent=}")
print(f"{file_path.parts=}") #拆解路径

# 判断文件状态
p = Path("test.py")
p.exists() # 是否存在路径
p.is_dir() #是否是一个目录
p.is_file() #是否是一个文件

#文件夹与遍历操作

itr_dir = cwd
itr_dir.mkdir(parents=True,exist_ok=True) # parent表示父目录文件夹不存在自动创建,exist_ok 表示如果文件目录存在,不报错

# 遍历当前目录下所有文件/文件夹
for it in itr_dir.iterdir():
    print(it)

# 遍历特定后缀的所有文件夹
for it in itr_dir.glob("*.py"):
    print(it)
   
#递归搜索所有特定文件
for it in itr_dir.rglob("*.parquet"):
    print(f"{it=}") 

output

bash 复制代码
/home/d/python_project/pathlib_test
/home/d
/home/d
/home/d/python_project
/home/d/python_project/pathlib_test/diff.py
diff.py
diff
.py
file_path.parent=PosixPath('/home/d/python_project/pathlib_test')
file_path.parts=('/', 'home', 'd', 'python_project', 'pathlib_test', 'diff.py')
/home/d/python_project/pathlib_test/glob_dir
/home/d/python_project/pathlib_test/test2.parquet
/home/d/python_project/pathlib_test/diff.py
/home/d/python_project/pathlib_test/diff.py
it=PosixPath('/home/d/python_project/pathlib_test/test2.parquet')
it=PosixPath('/home/d/python_project/pathlib_test/glob_dir/test.parquet')
相关推荐
Darling噜啦啦1 分钟前
前端三权分立与AI编程工具实践:从Clock案例看现代前端开发
前端
plainGeekDev1 分钟前
Android Framework 面试题:Binder都说不清楚,简历别写精通了
android·java
Gauss松鼠会3 分钟前
【GaussDB】基于SpringBoot实现操作GaussDB(DWS)的项目实战
java·数据库·经验分享·spring boot·后端·sql·gaussdb
難釋懷5 分钟前
Redis内存回收-内存淘汰策略
前端·数据库·redis
用户900305093625 分钟前
2026年Cursor平替工具推荐:免费高性价比替代方案
前端
我头上有犄角ovo7 分钟前
HarmonyOS 测肤拍照页实战:Metadata 实时取景 + Core Vision 拍后校验,从 0.001 的 widthRatio 踩坑到可上线
前端·harmonyos
画画的阿飞8 分钟前
里程碑三:基于 Vue3 领域模型架构建设
前端·node.js
玉米Yvmi8 分钟前
大文件上传的基石:切片上传原理与实现详解
前端·javascript·面试
Gauss松鼠会8 分钟前
【GaussDB】GaussDB 常见问题及解决方案汇总
java·数据库·算法·性能优化·gaussdb·经验总结
xiaogg367811 分钟前
k8s 部署yaml文件和Dockerfile文件配置
java·docker·kubernetes