变量名未定义

Variable name is not defined

所以基本上我试图遍历我的子目录和文件(图像),这样每个子目录都包含两张图像,一张以单词 first 开头,另一张以 first 开头用 second.

这个词

我想做的是在每个子目录中,我想将以first开头的图像分配给变量img1,而以[=13]开头的图像=] 到 img2.

这是我得到的:

路径='/my_path/'

for root, dirs, files in os.walk(path):
    for file in files:
        if file.startswith('first'):
            img1 = numpy.asarray(Image.open(root + '/' + file))
        if file.startswith('second'):
            img2 = numpy.asarray(Image.open(root + '/' + file))

    print 'Image 1 is:'
    print img1
    print 'Image 2 is:'
    print img2

但是,当我 运行 上述代码时,我得到以下信息:

Image 1 is:
Traceback (most recent call last):
  File "test.py", line 17, in <module>
    print img1
NameError: name 'img1' is not defined

我做错了什么?

谢谢。

#Your code
if file.startswith('first'):
        img1 = numpy.asarray(Image.open(root + '/' + file))

您有自己的代码,因此只有在满足该条件时才定义 img1。如果不满足(即没有文件以 'first' 开头),则不会定义 img1。因此,当您尝试打印 img1 时,python 不知道您在说什么。

您正在使用“/my_path/”调用您的函数。然后在 == '/my_path/' 的根中添加一个 '/',得到 '/my_path//filename'。

将根路径连接到文件名的更好方法是使用:

img1 = numpy.asarray(Image.open(os.path.join(root,file))

这将避免混淆双斜杠或正反斜杠。此外,正如其他人指出的那样,如果您肯定要在代码中使用变量,那么它应该在条件语句之外定义,否则它可能永远不会被定义。