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

Google Colab中Python代码无法批量读取指定路径JPG文件求助

狗品种识别代码批量处理时无法找到图片的问题排查

问题说明

在Google Colab运行狗品种识别Python代码时遇到以下问题:

  • 手动将代码中的{id}替换为具体文件名时,代码可正常读取图片;
  • 批量处理时(通过map生成文件路径),代码始终提示找不到指定路径下的JPG图片,但手动在对应路径下能直接找到目标文件,无法完成后续狗品种预测。

代码片段

id='../content/drive/MyDrive/dog-breed-identification/train/000bec180eb18c7604dcecc8fe0dba07.jpg'
dogs = pd.read_csv('../content/drive/MyDrive/dog-breed-identification/labels.csv')
dogs = dogs.sample(20)
dogs['file'] = dogs.id.map(lambda id: f'../content/drive/MyDrive/dog-breed-identification/train/{id}.jpg')
dogs['image'] = dogs.file.map(lambda f: get_thumbnail(f))
dogs.head()

报错情况

报错核心为FileNotFoundError,提示生成的文件路径不存在(对应截图显示的找不到文件错误)。

问题原因

代码存在变量名冲突:
你在开头定义了全局变量id,其值是完整的图片路径;而后续lambda表达式的参数名也用了id,这导致lambda里的id不会引用DataFrame中dogs.id的每行id值,而是直接使用全局的那个完整路径。

最终生成的路径会变成类似:

../content/drive/MyDrive/dog-breed-identification/train/../content/drive/MyDrive/dog-breed-identification/train/000bec180eb18c7604dcecc8fe0dba07.jpg.jpg

这种嵌套的错误路径自然找不到文件。

解决方案

有两种简单的修复方式:

  1. 修改全局变量名:把开头的id改成其他名称(比如sample_img_path),或者直接删除这行(因为后续代码并未用到这个变量):
    # 改名示例
    sample_img_path='../content/drive/MyDrive/dog-breed-identification/train/000bec180eb18c7604dcecc8fe0dba07.jpg'
    
  2. 修改lambda参数名:把lambda里的参数id换成其他名称(比如x),避免和全局变量冲突:
    dogs['file'] = dogs.id.map(lambda x: f'../content/drive/MyDrive/dog-breed-identification/train/{x}.jpg')
    

修改后,lambda会正确读取DataFrame中每行的id值,生成正确的文件路径,批量处理即可正常读取图片。

内容的提问来源于stack exchange,提问作者Samuel STÅLBERG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:15:45