当前位置:首页>python>每天学习一点Python——掌握pathlib模块

每天学习一点Python——掌握pathlib模块

  • 2026-09-23 12:00:33
每天学习一点Python——掌握pathlib模块

每天学习一点Python——掌握pathlib模块

一、文件系统基础概念

文件本质

文件是存储在物理设备上的字节序列,每个字节代表0-255的整数。

文件系统核心功能

  1. 1. 提供文件的抽象表示方式
  2. 2. 管理存储和检索数据的设备接口

跨平台路径表示差异

# Windows系统路径表示windows_path = r"C:\Users\David\Documents\hello.txt"
# macOS/Linux系统路径表示mac_path = "/Users/David/Documents/hello.txt"linux_path = "/home/David/Documents/hello.txt"

重要提醒:Windows用\,macOS/Linux用/,而且\在Python中是转义字符。


二、使用pathlib处理文件路径

模块导入方式对比

# 方式一:导入整个模块import pathlibpath = pathlib.Path("/path/to/file.txt")
# 方式二:导入Path类(推荐)from pathlib import Pathpath = Path("/path/to/file.txt")

创建路径对象的三种方法

引入模块:

from pathlib import Path

方法1:从字符串直接创建路径

path1 = Path("/Users/David/Documents/hello.txt")

方法2:获取当前用户的主目录路径

home_dir = Path.home()print(home_dir)

输出结果(Windows):

WindowsPath('C:\Users\用户名')

输出结果(macOS/Linux):

PosixPath('/Users/用户名')

方法3:获取当前工作目录路径

current_dir = Path.cwd()print(current_dir)

输出结果示例:

WindowsPath('C:\Users\David\Documents')

注意事项:home()和cwd()后面的小括号不能省略。

路径分隔符处理原则

核心原则:编写代码时推荐使用正斜杠/,pathlib会自动适配当前操作系统。

推荐写法:使用正斜杠,确保跨平台兼容性

path = Path.home() / "Documents" / "project"

避免写法:硬编码Windows风格分隔符

path = Path.home() / "Documents\\project"

重要提醒:Python中反斜杠\是转义字符,需要特殊处理。

# ✅ 正确:使用原始字符串path = Path(r"C:\Users\David\file.txt")
# ❌ 错误:\U被解释为Unicode转义字符path = Path("C:\Users\David\file.txt")

注意:原始字符串的前面有个r,表示忽略转义字符,保持字符串原样。

处理Windows路径的四种方案

方案1:使用原始字符串(最简洁)

path = Path(r"C:\Users\David\file.txt")

方案2:转义反斜杠

path = Path("C:\\Users\\David\\file.txt")

方案3:统一使用正斜杠

path = Path("C:/Users/David/file.txt")

方案4:路径拼接(最灵活可靠)

path = Path("C:/") / "Users" / "David" / "file.txt"

三、路径操作:组合、拆分与验证

路径组合操作

file_path = Path.home() / "Desktop" / "hello.txt"print(file_path)

输出结果示例:

WindowsPath('C:\Users\用户名\Desktop\hello.txt')

访问路径各个组成部分

# 创建一个示例路径对象path = Path.home() / "hello.txt"

获取父目录路径:

print(path.parent)   
C:\Users\用户名

获取文件名:

print(path.name)     
hello.txt

获取文件主干名:

print(path.stem)     
hello

获取文件扩展名:

print(path.suffix)  
.txt

路径验证与检查

# 创建一个不存在的路径对象path = Path.home() / "nonexistent.txt"

检查路径是否存在:

print(f"路径存在: {path.exists()}")
路径存在: False

检查是否为文件:

print(f"是文件: {path.is_file()}")
是文件: False

检查是否为目录:

print(f"是目录: {path.is_dir()}")
是目录: False

检查是否为绝对路径:

print(f"是绝对路径: {path.is_absolute()}")
是绝对路径: True

四、文件和目录操作实践

创建目录的方法

from pathlib import Path

基础创建:在当前用户主目录下创建新目录

new_dir = Path.home() / "new_directory"new_dir.mkdir()

安全创建:目录已存在时不报错

new_dir.mkdir(exist_ok=True)

创建嵌套目录:自动创建所有必需的父目录

nested_dir = new_dir / "folder_a" / "folder_b"nested_dir.mkdir(parents=True)

重要提醒:如果不加parents=True参数,当父目录不存在时会报错:

FileNotFoundError: [WinError 3] 系统找不到指定的路径

最佳实践:一键创建完整目录树

target_dir = Path.home() / "projects" / "app" / "logs"target_dir.mkdir(parents=True, exist_ok=True)

创建文件的方法

# 创建空文件file_path = new_dir / "file1.txt"file_path.touch()

执行结果:在new_dir目录中创建file1.txt空文件。

目录内容遍历与文件搜索

目录遍历与搜索方法对比

方法
作用范围
搜索深度
适用场景
iterdir()
当前目录
不递归
查看目录内容
glob()
当前目录
不递归
按模式搜索文件
rglob()
当前目录及所有子目录
递归搜索
深层文件搜索

代码示例:

方法1:遍历当前目录所有内容

for item in new_dir.iterdir():    print(item.name)

输出结果示例:

file1.txtfolder_afolder_b

方法2:在当前目录搜索特定类型文件

for txt_file in new_dir.glob("*.txt"):    print(f"找到文本文件: {txt_file}")

输出结果示例:

找到文本文件: C:\Users\David\new_directory\file1.txt

方法3:递归搜索所有子目录中的特定文件

for py_file in new_dir.rglob("*.py"):    print(f"找到Python文件: {py_file}")

输出结果示例:

找到Python文件: C:\Users\David\new_directory\folder_a\program.py

一句话概括三种方法:

iterdir():查看这个文件夹里有什么。

glob():在这个文件夹里查找特定类型的文件。

rglob():在这个文件夹及其所有子文件夹里查找特定类型的文件。

五、总结

掌握pathlib模块,让你轻松处理文件路径的各种操作:

  1. 1. 统一使用正斜杠/,让代码天然具备跨平台兼容性
  2. 2. 善用路径拼接操作符/,构建路径清晰直观
  3. 3. 操作前先检查,避免文件不存在的错误

记住这些核心技巧,你就能自信地处理各种文件操作场景了!


📦 资源获取提示

关注「码农自习室」,后台回复关键词 Python学习,即可获取本文完整代码,一起动手掌握高效编程的核心技巧!


❤️ 支持我们

如果觉得本文对你有帮助,欢迎点赞 + 关注,您的支持是我们持续创作优质内容的最大动力!


📚 学习资源说明

本文内容是基于《Python Basics: A Practical Introduction to Python 3》(Real Python)一书的学习笔记整理。这本书是一本非常优秀的Python入门教材,推荐给所有想要系统学习Python的朋友们。

这本书的特点:

  • • ✅ 完全面向编程新手
  • • ✅ 每个概念都有代码示例
  • • ✅ 包含大量练习题
  • • ✅ 由经验丰富的Python开发者编写

跟着这本书学习,配合我的笔记整理,相信你能更快掌握Python编程!

让我们一起坚持学习,每天进步一点点!💪

最新文章

随机文章