变量名未定义
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))
这将避免混淆双斜杠或正反斜杠。此外,正如其他人指出的那样,如果您肯定要在代码中使用变量,那么它应该在条件语句之外定义,否则它可能永远不会被定义。
所以基本上我试图遍历我的子目录和文件(图像),这样每个子目录都包含两张图像,一张以单词 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))
这将避免混淆双斜杠或正反斜杠。此外,正如其他人指出的那样,如果您肯定要在代码中使用变量,那么它应该在条件语句之外定义,否则它可能永远不会被定义。