Python高级用法:路径与文件操作(os与pathlib)

路径与文件

前言

在Python中,os模块提供了与操作系统交互的各种功能,包括文件路径的操作。但是,与pathlib相比,os模块通常使用字符串来表示和操作路径,并且它的API更接近于传统的文件系统操作。一般使用pathlib和os相结合的方式对路径进行操作。

导入包

假设我们有以下的路径结构,在本文中将使用这一结构来演示路径和文件操作。

python 复制代码
import os
from pathlib import Path

判断路径存在

os方式

python 复制代码
p = "./testPath/testPath2/file.txt"
if os.path.exists(p):
    print("路径存在")
else:
    print("路径不存在")

patlib方式

python 复制代码
p = Path("./testPath/testPath2/file.txt")
if p.exists():
    print("路径存在")
else:
    print("路径不存在")

判断路径类型(判断文件还是文件夹)

os方式

python 复制代码
p = "./testPath/testPath2/file.txt"
if os.path.isfile(p):
    print("p为文件")
elif os.path.isdir(p):
    print("p为文件夹")
else:
    print("不存在该文件或文件夹")

pathlib方式

python 复制代码
p = Path("./testPath/testPath2/file.txt")
if p.is_file():
    print("p为文件")
elif p.is_dir():
    print("p为文件夹")
else:
    print("不存在该文件或文件夹")

获取父路径

os方式

python 复制代码
p = "./testPath/testPath2/file.txt"
parent_dir = os.path.dirname(p)
print(parent_dir)

pathlib方式

python 复制代码
p = Path("./testPath/testPath2/file.txt")
print(p.parent)

写入读出文件

os方式

python 复制代码
with open(p, "w") as f:
    f.write("Hello, World!")

with open(p, "r") as f:
    content = f.read()
print(content)

pathlib方式

python 复制代码
p.write_text("Hello, World!")
content = p.read_text()
print(content)

获得路径中所有子文件/子文件夹

os方式

python 复制代码
dir_path = "./testPath/testPath2"
for item in os.listdir(dir_path):
    item_path = os.path.join(dir_path, item)
    if os.path.isfile(item_path):
        print(item_path)
    elif os.path.isdir(item_path):
        print(item_path)

pathlib方式

python 复制代码
p = Path("./testPath/testPath2")
for item in p.iterdir():
    print(item)

获取文件扩展名

os方式

python 复制代码
p = "./testPath/testPath2/file.txt"
_, ext = os.path.splitext(p)
print(ext) 

pathlib方式

python 复制代码
p = Path("./testPath/testPath2/file.txt")
print(p.suffix) 

获取多个文件扩展名

os方式

python 复制代码
p = "./testPath/testPath2/file.tar.gz"
base, ext = os.path.splitext(p)
extensions = []
while ext:
    extensions.append(ext)
    base, ext = os.path.splitext(base)

print(extensions[::-1])

pathlib方式

python 复制代码
p = Path("./testPath/testPath2/file.tar.gz")
print(p.suffixes)

获取路径的组件

os方式

python 复制代码
p = "./testPath/testPath2/file.txt"
components = []
head, tail = os.path.split(p)
while head and tail:
    components.append(tail)
    head, tail = os.path.split(head)
components.append(head)  # 添加根目录或最后一个目录部分
components.reverse()
print(components)

pathlib方式

python 复制代码
p = Path("./testPath/testPath2/file.txt")
print(p.parts)

创建目录

os方式

python 复制代码
dir_path = "./testPath/testPath2/file3.txt"
os.makedirs(dir_path, exist_ok=True)

pathlib方式

python 复制代码
p = Path("./testPath/testPath2/file3.txt")
p.mkdir(parents=True, exist_ok=True)

删除文件或空目录

os方式

python 复制代码
dir_path = "./testPath/testPath2/file3.txt"
os.rmdir(dir_path)

pathlib方式

python 复制代码
p = Path("./testPath/testPath2/file3.txt")
p.rmdir()
相关推荐
烂蜻蜓6 小时前
Flask入门教程(二十六):Session API——用户会话状态管理
后端·python·flask
2603_965148118 小时前
家居百货蓝海:API挖掘高复购率生活小商品
大数据·服务器·人工智能·python·生活
阿童木写作11 小时前
跨境电商图片翻译工具推荐:批量图片翻译+视频字幕翻译+智能抠图
python·macos·音视频·xcode
cui_ruicheng11 小时前
LangChain 应用开发(十四):Agent 上下文与记忆机制
服务器·人工智能·python·langchain
circuitsosk12 小时前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent
shehuiyuelaiyuehao12 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
宸津-代码粉碎机12 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
测试199812 小时前
如何用appium搭建Android自动化测试框架?
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
程序员大雄学编程13 小时前
微积分46. 无穷级数四大核心性质:从理论到实践的全方位解析
python·学习·微积分·学习工具
数字化转型分享点滴13 小时前
## 工厂数字化管理系统的价值体现:构建制造全流程数据闭环
python