python文件系统路径处理pathlib库用法

pathlib 是 Python 的标准库之一,提供了一种面向对象的方法来处理文件系统路径。它的设计旨在简化路径操作,使代码更清晰易懂。以下是 pathlib 的主要用法和功能详解,包括常见方法和属性。

1. 导入 pathlib

首先,您需要导入 pathlib

from pathlib import Path

2. 创建路径对象

Path 对象可以通过多种方式创建:

# 从字符串创建路径
p1 = Path('example.txt')

# 使用绝对路径
p2 = Path('/home/user/example.txt')

# 使用相对路径
p3 = Path('..')  # 上级目录

3. 常用方法和属性

3.1 路径操作

  • 拼接路径
p = Path('folder') / 'subfolder' / 'file.txt'
  • 获取父目录
parent = p.parent  # 返回父目录对象
  • 获取文件名和后缀
filename = p.name       # 返回文件名 'file.txt'
suffix = p.suffix       # 返回后缀 '.txt'
stem = p.stem           # 返回不带后缀的文件名 'file'

3.2 检查路径

  • 检查路径是否存在
exists = p.exists()     # 文件或目录是否存在
is_file = p.is_file()   # 是否为文件
is_dir = p.is_dir()     # 是否为目录
  • 检查路径是否是符号链接
is_symlink = p.is_symlink()

3.3 文件和目录操作

  • 创建目录
new_dir = Path('new_folder')
new_dir.mkdir(exist_ok=True)  # 如果目录已存在,则不抛出异常
  • 删除文件
if p.is_file():
    p.unlink()  # 删除文件
  • 遍历目录
for child in new_dir.iterdir():  # 遍历目录下的所有文件和子目录
    print(child)
  • 获取目录中文件的列表
files = list(new_dir.glob('*.txt'))  # 获取所有 .txt 文件

3.4 文件读取和写入

  • 读取文件内容
content = p.read_text()  # 读取文本文件内容
  • 写入内容到文件
p.write_text("Hello, World!")  # 写入字符串到文件

3.5 查询文件属性

  • 获取文件大小
size = p.stat().st_size  # 文件大小(字节)
  • 获取创建时间
import time
creation_time = time.ctime(p.stat().st_ctime)  # 获取文件创建时间
  • 获取修改时间
modification_time = time.ctime(p.stat().st_mtime)  # 获取文件最后修改时间

3.6 其他常用功能

  • 路径的解析
absolute_path = p.resolve()  # 获取绝对路径
  • 检查路径是否符合某种模式
matches = new_dir.glob('*.txt')  # 获取所有匹配的文件
for match in matches:
    print(match)

4. 示例代码

以下是一个综合示例,展示了如何使用 pathlib 进行文件和目录操作:

from pathlib import Path

# 创建一个新目录
new_folder = Path('new_folder')
new_folder.mkdir(exist_ok=True)

# 创建一个新文件并写入内容
file_path = new_folder / 'example.txt'
file_path.write_text("Hello, pathlib!")

# 读取文件内容
content = file_path.read_text()
print(f"文件内容: {content}")

# 遍历目录中的所有文本文件
print("目录中的 .txt 文件:")
for txt_file in new_folder.glob('*.txt'):
    print(txt_file.name)

# 删除文件
if file_path.is_file():
    file_path.unlink()
    print(f"{file_path.name} 已被删除。")
posted @ 2025-04-23 21:49  Clefairy  阅读(509)  评论(0)    收藏  举报