You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下Python调用glob.glob返回空列表问题排查

Windows环境下glob返回空列表修复方案

按以下顺序排查修复即可:

  • 递归匹配参数缺失:Python内置glob.glob()默认不开启递归遍历,路径中写**通配符不会自动匹配多层子目录,必须显式传入recursive=True参数,递归规则才会生效。
  • 相对路径基准错误:.ipynb的运行工作目录(Python进程启动时的当前路径)和ipynb文件的存储路径不一定一致。你写的code/Datasets/...是相对路径,会从当前工作目录开始寻址,如果工作目录不对,哪怕路径拼写正确也找不到文件。
  • 后缀/格式匹配问题:glob默认大小写敏感,如果图片后缀是大写.JPG、.JPEG,写*.jpg会匹配失败;Windows原生路径用反斜杠,混合斜杠写法偶尔会触发匹配异常。

先确认当前工作目录

先在notebook单元格运行以下代码,查看当前实际工作路径:

import os
print(os.getcwd())

如果输出的路径不是code文件夹所在的父目录,先切换到正确路径,或者直接写文件的绝对路径:

# 替换为你本地code文件夹所在的实际父目录,比如code存放在D:/ml_project下就填这个路径
os.chdir("D:/ml_project")

举个例子:如果你的文件结构是D:/ml_project/code/xxx.ipynb、D:/ml_project/code/Datasets/train/...,那工作目录就要切到D:/ml_project,你之前写的code/Datasets/train/**/*.jpg路径才是对的;如果工作目录切到了code文件夹内部,路径就要改成Datasets/train/**/*.jpg。

修正glob调用代码

开启递归参数后的可运行代码如下:

import glob

train_dir = "code/Datasets/train/**/*.jpg"
test_dir = "code/Datasets/test/**/*.jpg"

train_files = glob.glob(train_dir, recursive=True)
test_files = glob.glob(test_dir, recursive=True)

print(f"训练集匹配到文件数:{len(train_files)}")
print(f"测试集匹配到文件数:{len(test_files)}")

兼容性更好的兜底写法

如果上述代码还是匹配失败,直接用标准库pathlib做路径匹配,对Windows路径适配更好,不需要手动处理斜杠问题:

from pathlib import Path

# 替换为Datasets文件夹的实际路径
dataset_root = Path("code/Datasets")
# 同时匹配jpg、jpeg、JPG、JPEG后缀
train_files = list(dataset_root.glob("train/**/*.[jJ][pP][eE]*[gG]"))
test_files = list(dataset_root.glob("test/**/*.[jJ][pP][eE]*[gG]"))

内容的提问来源于stack exchange,提问作者Anefu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:24:25