Pathlib操作文件IN Python

发布于:2024-11-27 ⋅ 阅读:(65) ⋅ 点赞:(0)

系列文章目录



前言

pathlib 是 Python 标准库中用于操作文件和目录路径的模块,自 Python 3.4 起引入。它提供了一种面向对象的方式处理路径,使路径操作更加简洁、可读和跨平台。pathlib 取代了传统模块如 os.path 和部分 shutil 的功能,成为推荐的路径操作工具。


一、Pathlib是什么?

pathlib 是 Python 标准库中用于操作文件和目录路径的模块,自 Python 3.4 起引入。它提供了一种面向对象的方式处理路径,使路径操作更加简洁、可读和跨平台。pathlib 取代了传统模块如 os.path 和部分 shutil 的功能,成为推荐的路径操作工具。

二、使用步骤

  1. 面向对象:通过类和方法操作路径,避免字符串拼接。
  2. 跨平台:自动处理 Windows 和 POSIX(Linux/Unix/macOS)路径的差异。
  3. 功能丰富:支持路径解析、文件操作、目录管理等多种功能。
  4. 高可读性:语法简洁直观,易于理解和维护。
  5. 支持类型化路径
    • Path:用于处理通用路径。
    • PurePath:只处理路径字符串,不访问实际文件系统。

创建路径对象

from pathlib import Path

# 创建一个路径对象
p = Path("/home/user/example.txt")
print(p)  # 输出: /home/user/example.txt

动态构建路径

from pathlib import Path

base = Path("/home/user")
file_path = base / "documents" / "file.txt"  # 拼接路径
print(file_path)  # 输出: /home/user/documents/file.txt

检查路径类型

from pathlib import Path

p = Path("/home/user/example.txt")
print(p.exists())  # 路径是否存在
print(p.is_file())  # 是否是文件
print(p.is_dir())   # 是否是目录

获取路径信息

p = Path("/home/user/example.txt")
print(p.name)     # 文件名: example.txt
print(p.stem)     # 文件名不含后缀: example
print(p.suffix)   # 文件后缀: .txt
print(p.parent)   # 父目录: /home/user
print(p.parts)    # 路径各部分: ('/', 'home', 'user', 'example.txt')

文件与目录操作

from pathlib import Path

# 创建目录
dir_path = Path("/home/user/new_folder")
dir_path.mkdir(parents=True, exist_ok=True)  # 递归创建目录

# 写入文件
file_path = dir_path / "example.txt"
file_path.write_text("Hello, pathlib!", encoding="utf-8")

# 读取文件
content = file_path.read_text(encoding="utf-8")
print(content)  # 输出: Hello, pathlib!

# 删除文件
file_path.unlink()

# 删除目录(仅删除空目录)
dir_path.rmdir()

遍历目录

from pathlib import Path

dir_path = Path("/home/user")
for item in dir_path.iterdir():
    print(item)  # 列出目录中的所有文件和子目录

匹配文件

from pathlib import Path

dir_path = Path("/home/user")
# 匹配 .txt 文件
for txt_file in dir_path.glob("*.txt"):
    print(txt_file)

# 递归匹配 .txt 文件
for txt_file in dir_path.rglob("*.txt"):
    print(txt_file)
功能 os.path pathlib
面向对象支持
跨平台支持 需要手动处理路径分隔符 自动适配
路径拼接 使用 os.path.join() 使用 / 运算符
代码可读性 较低
文件操作支持 依赖其他模块(如 os 和 shutil 内置方法,如 write_text() 等