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

cv.imread读取单文件正常,遍历os.listdir()批量读取返回None如何解决?

错误根因
  • os.listdir('./data') 仅返回指定目录下的纯文件名,不会携带父级目录前缀,遍历得到的img变量为btn1.png这类无路径字符串,不是可被cv.imread正确识别的相对/绝对路径。
  • 脚本默认从当前运行的工作目录查找文件,直接传入纯文件名时,程序会在脚本执行目录而非./data目录下查找图片,找不到对应文件就会返回None。
修复代码

将目录路径和文件名拼接为完整路径后再传入cv.imread即可:

imgs = os.listdir('./data')
targets = []
for img in imgs:
    # 拼接得到完整的图片路径
    img_path = os.path.join('./data', img)
    target = cv.imread(img_path)
    targets.append(target)
可选校验逻辑

如果仍存在返回None的情况,可增加路径合法性校验,过滤目录下的非图片文件或隐藏文件:

imgs = os.listdir('./data')
targets = []
for img in imgs:
    img_path = os.path.join('./data', img)
    # 跳过非文件类型
    if not os.path.isfile(img_path):
        continue
    target = cv.imread(img_path)
    if target is not None:
        targets.append(target)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:15:03