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

Jupyter Notebook中name 'path' is not defined错误求助,已试pathlib无效

解决name 'path' is not defined错误

错误根源

你代码里直接使用了path变量,但从未定义过它——这和你安装pathlib完全无关,pathlib是处理路径的库,但你这段代码里既没用到它,也没给path赋值。你的images变量已经通过glob.glob拿到了所有图片的路径列表,核心问题是没从这个列表里取出具体路径赋值给path。

修正后的代码

import glob
import cv2 as cv

images = glob.glob('.//views//**.png')
print('There are {} images available'.format(len(images)))

# 先判断列表非空,避免索引越界错误
if images:
    # 取第一张图片的路径赋值给path
    path = images[0]
    # 只读取一次图片,避免重复磁盘IO操作
    img_hsv = cv.imread(path, cv.COLOR_BGR2HSV)
    print('First image has {} number of pixels'.format(len(img_hsv[:,:,0].flatten())))
    print('First image shape is {} '.format(img_hsv.shape))
else:
    print('No images found in the target directory!')

关键说明

  • 必须显式赋值path:通过path = images[0]从已获取的路径列表中取出第一张图的路径,cv.imread才能拿到有效路径参数。
  • 增加非空判断:如果images为空(没找到匹配的图片),直接取images[0]会触发索引错误,加判断能让代码更健壮。
  • 复用图片对象:原代码两次调用cv.imread会重复读取磁盘文件,把读取结果存到变量中复用更高效。
  • 可选:用pathlib替代glob的写法
    from pathlib import Path
    
    images = list(Path('.//views').rglob('*.png'))
    if images:
        path = str(images[0])  # cv.imread需要字符串格式路径,将Path对象转为字符串即可
        # 后续图片处理逻辑和上面一致
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:01:39