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

为何glob.glob可匹配到文件但open与np.load无法读取该文件?

问题排查与解决方案

核心原因

该问题本质是路径不一致导致的,glob.glob()能匹配到文件说明目标文件确实存在,open()、np.load()报错是因为传入的路径和实际文件路径存在你感知不到的差异,或者Python运行环境与终端的文件系统视图不一致。

解决步骤

  • 第一步:直接使用glob返回的路径读取文件
    你手动输入的路径可能混入了不可见字符(比如零宽空格、特殊换行符、多余的不可见空白),glob的模糊匹配逻辑能识别到实际存在的文件,但是原路径传入open()时无法定位到文件,直接使用glob返回的路径即可:
import glob
import numpy as np

target_path = '/data00/home/zhangbowen.17/code/text_rec/dataset/BigAndSmallDataset/cut_100_big_user_video_500_mine_precomp/train_cnn_fea.npy'
matched_files = glob.glob(target_path)
if matched_files:
    real_file_path = matched_files[0]
    # 读取npy文件直接传入路径即可
    data = np.load(real_file_path)
  • 第二步:确认路径是否完全一致
    如果上一步依然报错,对比你手动定义的路径和glob返回的路径的字符编码,确认是否存在不可见字符:
# 打印两个路径的每个字符的ASCII/Unicode编码
print("自定义路径字符编码:", [ord(c) for c in target_path])
print("glob返回路径字符编码:", [ord(c) for c in real_file_path])
# 直接对比路径是否完全相等
print("路径是否完全一致:", target_path == real_file_path)

如果返回结果为False,删除原路径重新手动输入,或者直接复制glob返回的路径使用即可。

  • 第三步:排查运行环境的文件系统差异
    如果路径完全一致依然报错,说明你运行Python的环境和执行ls命令的终端环境的文件系统视图不一致:
    1. 如果你在Docker容器、WSL、虚拟chroot环境中运行Python,确认目标路径是否已经正确挂载到Python运行环境中
    2. 可以在Python中打印上级目录的文件列表,确认目标文件是否在Python运行环境的目录中存在:
    import os
    parent_dir = os.path.dirname(target_path)
    print("Python环境下上级目录文件列表:", os.listdir(parent_dir))
    

如果列表中没有目标文件,调整挂载配置或者切换到和终端一致的运行环境即可。

注:读取npy文件不需要手动调用open,直接给np.load传路径即可,就算手动打开也需要使用rb二进制模式,不过该操作不会触发FileNotFoundError,只有路径问题才会返回该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:15:02