Python中找文件名推荐用pathlib(简洁)、os.listdir(灵活)或glob(通配符快),注意区分文件名与完整路径,需用basename或name/stem提取。

在Python中找文件名,核心是遍历目录、匹配条件、提取名称。不一定要用复杂工具,标准库里的 os 和 pathlib 就够用,关键是选对方法、写清逻辑。
用 pathlib 找名字最简洁(推荐)
pathlib 是 Python 3.4+ 的官方路径操作模块,读起来像自然语言,适合大多数查找场景。
- 找当前目录下所有
.py文件名(不含路径):from pathlib import Path
names = [f.name for f in Path(".").glob("*.py")] - 递归找子目录中含 “report” 的 Excel 文件名:
names = [f.name for f in Path(".").rglob("*report*.xlsx")] - 只取纯文件名(去掉后缀):
names_no_ext = [f.stem for f in Path(".").glob("data_*.csv")]
用 os.listdir + 字符串判断更灵活
适合需要自定义规则的情况,比如按长度、是否含数字、大小写组合等筛选。
- 列出当前目录下所有以大写字母开头的文件名:
import os
names = [n for n in os.listdir(".") if n and n[0].isupper()] - 找文件名里有日期格式(如 20240510)的文本文件:
names = [n for n in os.listdir(".") if ".txt" in n and n.replace(".txt", "").replace("-", "").isdigit() and len(n) >= 12]
用 glob 模糊匹配带通配符
如果你熟悉 shell 的 * 和 ?,glob 上手最快,支持递归(需加 **)。
艺帆网络工作室网站源码,是国庆后新一批新概念的网站源码,采用流行的Html5和JS组合流畅顺滑,界面清晰明朗,适合科技类企业和公司建站使用。如果你是想成为一家独特的设计公司,拥有独特的文化,追求品质,而非数量与规模。 这种坚持一直贯穿于项目运作之中,从品牌建立、形象推广设计到品牌形象管理。那可以考虑使用这款艺帆网络工作室网站源码。 这款源码中服务项目和团队程序需要在_template文件夹下的in
立即学习“Python免费学习笔记(深入)”;
- 找所有三级子目录下的日志文件名:
import glob
names = [os.path.basename(p) for p in glob.glob("logs/**/*/*.log", recursive=True)] - 找文件名中第二位是数字、扩展名为
.cfg的文件:names = [os.path.basename(p) for p in glob.glob("?.[0-9]*.cfg")]
注意:区分“文件名”和“完整路径”
很多人混淆这两者。真正要的“文件名”通常指 basename(不含目录),不是全路径。
- 错误做法:
glob.glob("data/*.csv")返回的是"data/report.csv"—— 这是路径,不是文件名 - 正确提取文件名:
[os.path.basename(p) for p in glob.glob("data/*.csv")]或用Path(p).name - 如果只要主名(不含扩展名),用
Path(p).stem或os.path.splitext(os.path.basename(p))[0]
基本上就这些。选 pathlib 写得清爽,用 glob 匹配快,靠 os.listdir 控制细——根据你手头的条件挑一个就行。









