python3 pathlib模块 详解
pathlib
是 Python 3.4 引入的标准库模块,用于处理文件和路径。它提供了面向对象的接口,简洁优雅,功能强大,是现代 Python 开发操作路径的推荐选择。
以下是对 pathlib
模块的详细介绍及用法:
1. 基本概念
导入模块
1
| from pathlib import Path
|
Path
类是 pathlib
模块的核心。它抽象了不同操作系统文件路径的细节,支持跨平台操作。
2. 创建 Path
对象
创建路径对象
1 2 3 4 5
| path = Path("/home/user/documents")
relative_path = Path("documents/example.txt")
|
当前工作目录
1 2
| current_dir = Path.cwd() print(current_dir)
|
当前脚本所在目录
1 2
| script_dir = Path(__file__).resolve().parent print(script_dir)
|
3. 路径的基本操作
拼接路径
使用 /
运算符拼接路径,比字符串操作更简洁。
1 2
| path = Path("/home/user") / "documents" / "example.txt" print(path)
|
获取路径的父目录
1 2
| path = Path("/home/user/documents/example.txt") print(path.parent)
|
获取路径的各部分
1 2 3 4 5
| path = Path("/home/user/documents/example.txt") print(path.name) print(path.stem) print(path.suffix) print(path.parts)
|
判断路径类型
1 2 3
| path = Path("/home/user/documents/example.txt") print(path.is_file()) print(path.is_dir())
|
检查路径是否存在
1 2
| path = Path("/home/user/documents/example.txt") print(path.exists())
|
4. 遍历目录
遍历当前目录的文件和子目录
1 2 3
| path = Path("/home/user/documents") for item in path.iterdir(): print(item)
|
递归遍历目录
使用 glob()
或 rglob()
查找符合模式的文件。
1 2 3 4 5 6 7 8 9
| path = Path("/home/user/documents")
for txt_file in path.glob("*.txt"): print(txt_file)
for txt_file in path.rglob("*.txt"): print(txt_file)
|
5. 文件操作
创建目录
1 2
| path = Path("/home/user/new_folder") path.mkdir(parents=True, exist_ok=True)
|
删除目录或文件
1 2 3 4 5 6 7
| file_path = Path("/home/user/example.txt") file_path.unlink()
dir_path = Path("/home/user/empty_folder") dir_path.rmdir()
|
读取文件内容
1 2 3
| file_path = Path("/home/user/example.txt") content = file_path.read_text(encoding="utf-8") print(content)
|
写入文件内容
1 2
| file_path = Path("/home/user/example.txt") file_path.write_text("Hello, World!", encoding="utf-8")
|
6. 路径比较
pathlib
支持路径的比较操作。
1 2 3 4
| path1 = Path("/home/user/documents") path2 = Path("/home/user/documents/example.txt")
print(path1 < path2)
|
7. 高级功能
获取绝对路径
1 2
| path = Path("documents/example.txt") print(path.resolve())
|
文件大小
1 2
| file_path = Path("/home/user/example.txt") print(file_path.stat().st_size)
|
修改时间、创建时间等信息
1 2 3 4
| file_path = Path("/home/user/example.txt") info = file_path.stat() print(info.st_mtime) print(info.st_ctime)
|
8. 跨平台操作
pathlib
自动适配不同的操作系统,无需担心路径分隔符问题。
但如果需要明确使用 Windows 或 Posix 风格路径,可以使用 PureWindowsPath
或 PurePosixPath
:
1 2 3 4
| from pathlib import PureWindowsPath, PurePosixPath
windows_path = PureWindowsPath("C:/Windows/System32") posix_path = PurePosixPath("/home/user/documents")
|
9. 示例:批量重命名文件
以下示例将目录下的所有 .txt
文件重命名为 .bak
文件:
1 2 3 4 5
| path = Path("/home/user/documents")
for file in path.glob("*.txt"): new_name = file.with_suffix(".bak") file.rename(new_name)
|
pathlib
模块非常强大且易于使用,大大简化了文件和路径操作。如需进一步扩展或解决特定问题,请告诉我!