如何获取目录中的所有文件(不含子目录)?
获取目录下所有文件(不含子目录)的正确方法
你之前靠判断名称含“.”的方法存在明显缺陷:会漏掉无扩展名的文件(比如Linux下的可执行文件),还会误把带点的子目录(比如.git、my.config.dir)当成文件。下面是两种靠谱的解决方案:
方法一:os模块组合使用
用os.listdir获取所有条目,再通过os.path.isfile判断是否为文件(注意要拼接完整路径):
import os target_dir = "/你的目标目录路径" # 列表推导式过滤出所有文件 files = [item for item in os.listdir(target_dir) if os.path.isfile(os.path.join(target_dir, item))]
方法二:pathlib模块(Python3.4+推荐)
pathlib是更现代的路径操作库,代码更简洁直观:
from pathlib import Path target_dir = Path("/你的目标目录路径") # 获取所有直接子文件,返回文件名列表 files = [file.name for file in target_dir.glob("*") if file.is_file()] # 如果需要完整文件路径,直接保留file对象即可 # files = [file for file in target_dir.glob("*") if file.is_file()]
可选:排除隐藏文件
如果需要过滤掉开头带“.”的隐藏文件,只需在过滤条件里加判断:
- os模块版本:
files = [item for item in os.listdir(target_dir) if os.path.isfile(os.path.join(target_dir, item)) and not item.startswith(".")]
- pathlib版本:
files = [file.name for file in target_dir.glob("*") if file.is_file() and not file.name.startswith(".")]
内容的提问来源于stack exchange,提问作者orsnmkhl
相关产品推荐
相关产品推荐

