使用“ open”打开PIL图像时,文件名带有一个空字符串

时间:2019-12-15 13:57:30

标签: python python-imaging-library

我命名了文件夹中的所有文件,但是当我运行代码时,它只是不返回任何内容作为文件的filename属性

if __name__ == '__main__':
    print("Your Program Here")
    images = glob.glob("uncropped/*.jpg")
    for image in images:
        with open(image, 'rb') as file:
            img = Image.open(file)
            print(img.filename)
            print("open")
            input()

此代码不返回任何文件名。我该怎么办?

1 个答案:

答案 0 :(得分:1)

问题是您自己使用内置的open()打开了图像文件,并将其传递给Image.open()。坦率地说,我同意documentation在这种情况下有点模棱两可-我想一个真实的file 一个“文件状对象”。

无论如何,如果让PIL打开文件,则它会起作用:

import glob
from PIL import Image

folder = "*.jpg"

if __name__ == '__main__':
    print("Your Program Here")
    images = glob.glob(folder)
    for image in images:
        img = Image.open(image)
        print(img.filename)
        print("open")

如果由于某种原因确实需要该属性,一种解决方法是自己添加该属性:

if __name__ == '__main__':
    print("Your Program Here")
    images = glob.glob(folder)
    for image in images:
        with open(image, 'rb') as file:
            img = Image.open(image)
            img.filename = image  # Manually add attribute.
            print(img.filename)
            print("open")