所以基本上我正在尝试遍历我的子目录和文件(图像),这样每个子目录包含两个图像,一个以单词first
开头,另一个以单词second
。
我想要做的是,在每个子目录中,我想将以first
开头的图像分配给变量img1
,以及以second
开头的图像到img2
。
这是我得到的:
path ='/ 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
我做错了什么?
感谢。
答案 0 :(得分:2)
#Your code
if file.startswith('first'):
img1 = numpy.asarray(Image.open(root + '/' + file))
您拥有代码,因此只有在满足条件时才定义img1
。如果不满足(即没有文件以'first'开头),则不会定义img1
。那么当你尝试打印img1时,python不知道你在说什么。
答案 1 :(得分:1)
您正在使用“/my_path/
”调用您的函数。然后在根目录中添加“/
”== /my_path/
',它会为您提供“/my_path//filename
”。
将根路径连接到文件名的更好方法是使用:
img1 = numpy.asarray(Image.open(os.path.join(root,file))
这将避免任何混合的双斜线或正斜杠和反斜杠。另外,正如其他人所指出的那样,如果您肯定要在代码中使用变量,那么它应该在条件语句之外定义,否则它可能永远不会被定义。