繁体   English   中英

Python-从文件名列表读取文件时出错

[英]Python - error reading file from list of filenames

我正在尝试将文件夹中的第一张图像与同一文件夹中的所有其他图像进行比较,以检查是否有相同的图像。 简单的想法-将有问题的文件夹的文件名加载到列表f,进行嵌套的for循环以将f [0]与f [1],f [2] ...进行比较,依此类推。 这适用于f [0],f [1],f [2],但是给IOError没有这样的文件或目录:'1_slice_0003.tif'。 该文件位于文件夹中,并且已正确写入f(我可以正确打印f [3])。 f的长度也与映像目录中的文件数匹配。 我在这里想念什么?

from PIL import Image
import math, operator
import os

f = os.listdir("E:/JAWS/Converted_tiff/1")
count = 0

for filename in f:


    h1 = Image.open(filename).histogram()

    for filename in f:

       filename = f[count]
       h2 = Image.open(filename).histogram()

       rms = math.sqrt(reduce(operator.add,
                    map(lambda a,b: (a-b)**2, h1, h2))/len(h1))

       print str(f[count])
       print rms
       count += 1

您还需要提供文件夹的路径。

for filename in f:
    h1 = Image.open(os.path.join(f, filename)).histogram()

您将计数增加到错误的级别,并且没有使用实际路径打开文件。

from PIL import Image
import math, operator
import os

f = os.listdir("E:/JAWS/Converted_tiff/1")
count = 0

for filename in f:


    h1 = Image.open(os.path.join(f, filename)).histogram()

    for filename in f:

       filename = f[count]
       h2 = Image.open(os.path.join(f, filename)).histogram()

       rms = math.sqrt(reduce(operator.add,
                    map(lambda a,b: (a-b)**2, h1, h2))/len(h1))

       print str(f[count])
       print rms

    count += 1

顺便说一句,相反,每次您都可以缓存直方图时打开文件,以避免一次又一次地打开同一文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM