跳到正文
效率工具实用笔记关于本站
文件整理

用 pathlib 查看目录和文件后缀:先检查再整理

约 5 分钟阅读AI 辅助整理

面向初学者的 pathlib 入门:先确认目录里有什么、文件后缀是什么,再决定是否整理。只操作自建示例目录,不执行删除或系统修改,并说明版本与平台限制。

本文要点

  1. 先建立一个只用于练习的目录结构

  2. pathlib 的 PurePath 提供几个只做字符串处理的属性,不访问文件系统

  3. 如果 is_dir() 返回 False,先确认路径拼写和当前工作目录是否正确

用 pathlib 查看目录和文件后缀:先检查再整理的知识要点示意图
依据已审核正文摘取要点制作的示意图,非实物照片;请结合正文中的条件与范围阅读。要点摘自已审核正文;完整条件与说明见正文。查看高清图解 ↗
本文目录

先回答:想整理文件前,用 pathlib 检查什么

如果你准备整理一个目录,先别急着移动或重命名文件。用 pathlib 先做三件检查:这个路径是不是目录、目录里有哪些条目、每个文件的后缀是什么。

pathlib 是 Python 标准库中表示文件系统路径的模块,从 Python 3.4 开始提供。它把路径做成对象,Path 是最常用的具体路径类,会根据当前系统生成对应的路径类型。本文只讨论查看目录内容和读取后缀这些基础操作,不涉及删除、批量改名或系统级修改。

适用情境:你有一个自建示例目录,想先看清楚里面有什么,再决定后续怎么整理。本文所有操作都只针对自建示例,不针对真实工作目录。

自建示例目录与查看目录内容

先建立一个只用于练习的目录结构。下面命令只创建示例文件,不修改系统其他位置。

from pathlib import Path

base = Path("demo_check")
base.mkdir(exist_ok=True)
(base / "notes.txt").write_text("示例文本")
(base / "photo.jpg").write_bytes(b"demo")
(base / "archive.tar.gz").write_bytes(b"demo")
(base / "no_suffix").write_text("无后缀")

检查这个路径是不是目录:

p = Path("demo_check")
print(p.is_dir())

输出应为 True。本例用于查看已建立的示例路径是否指向目录。异常返回值须以你所用版本的文档为准。

列出目录内容:

for child in p.iterdir():
    print(child)

iterdir() 会逐个产出目录中的条目,顺序是任意的,不包含 "." 和 ".."。如果你需要固定顺序,可以自己排序后再看。

查看文件后缀:suffix、suffixes 与 stem

pathlib 的 PurePath 提供几个只做字符串处理的属性,不访问文件系统。

suffix 是最后一个点号后面的部分,通常叫文件扩展名:

print(Path("demo_check/notes.txt").suffix)
print(Path("demo_check/archive.tar.gz").suffix)
print(Path("demo_check/no_suffix").suffix)

输出依次是 .txt、.gz 和空字符串。注意 archive.tar.gz 的 suffix 只取最后一段 .gz。

suffixes 返回一个列表,包含路径中多个后缀:

print(Path("demo_check/archive.tar.gz").suffixes)

输出是 ['.tar', '.gz']。

stem 是去掉最后一个后缀后的文件名部分:

print(Path("demo_check/archive.tar.gz").stem)

输出是 archive.tar。

把这些属性放进遍历里,就能先看清目录中每个条目的后缀:

for child in sorted(Path("demo_check").iterdir()):
    print(child.name, "|", child.suffix)

这段代码只读取名称和后缀,不移动、不重命名、不删除任何文件。

检查结果与常见错误排查

如果 is_dir() 返回 False,先确认路径拼写和当前工作目录是否正确。可以用 Path.cwd() 查看当前目录,再用 resolve() 得到绝对路径,帮助判断你实际检查的是哪个位置。

如果后缀和你预期不一致,例如 archive.tar.gz 只显示 .gz,这是 suffix 的定义决定的:它只取最后一个点号后的部分。需要看全部后缀时改用 suffixes。

如果遍历结果顺序每次不同,这是正常现象,iterdir() 不保证顺序。需要稳定输出时,用 sorted() 包一层。

适用限制与事实依据

本文只覆盖 pathlib 的基础查看操作:Path、iterdir()、is_dir()、suffix、suffixes、stem,以及用于确认位置的 cwd() 和 resolve()。没有涉及删除、移动、批量重命名、递归遍历全部高级参数或系统修改。

行为限制:iterdir() 返回顺序任意;suffix 只取最后一个点号后的部分;suffixes 返回后缀列表;stem 去掉最后一个后缀。

安全提醒:本文示例只创建和读取自建目录中的文件。真实整理前请先备份,不要直接对重要目录执行移动、重命名或删除操作。

事实依据:Python 官方文档 pathlib 模块页面。

观看知识要点视频 18 秒

18秒无旁白要点导览,文字来自已审核正文;完整步骤、条件及参考资料见下方。

参考资料

以下原始资料提供本文依据;请结合日期、适用条件和产品说明查阅。

请结合原始资料的适用条件阅读。

返回文件整理 →