使用 PIL.Image._getexif() 访问 exif 信息时遇到问题

Trouble accessing exif information with PIL.Image._getexif()

我正在尝试从“.nef”文件中提取 exif 信息,以便根据检索到的数据自动将文件分类到文件夹中。

根据我的阅读,PIL 似乎是将信息输入 Python 的不错选择。

我已经安装了 PIL,它可以正确导入,PIL.Image 模块也是如此。

当我尝试调用 'PIL.Image._getexif()'

时出现问题
from PIL import Image
from PIL.ExifTags import TAGS

firstfile = 'link to file'
exif = Image._getexif(firstfile)

得到这个错误:

AttributeError: 'module' object has no attribute '_getexif'

较长版本的代码也会出现错误:

def get_exif(fn):
    ret = {}
    i = Image.open(fn)
    info = i._getexif()
    for tag, value in info.items():
        decoded = TAGS.get(tag, tag)
        ret[decoded] = value
    Image.close(fn)
    return ret

exifinfo = get_exif(firstfile)

这失败了:

AttributeError: _getexif

可能是我PIL安装错了?为什么无法调用“_getexif()”?

备注: 直接搜索 "AttributeError: 'module' object has no attribute '_getexif'" 的唯一 google 结果 old/404 没有帮助,这让我相信这不是一个常见的问题。

看来 PIL 不是我想要完成的目标的合适模块。

我能够通过使用 PyExifTool 从 nef 文件中提取 EXIF 信息来实现我的目的(根据 EXIF 信息对文件夹中的项目进行排序)。

如果您坚持使用 PIL,下面是一个工作片段,但似乎有更好的模块可以产生更多结果。

https://pypi.org/project/exif/

from PIL import Image
from PIL.ExifTags import TAGS

ret = {}
with Image.open(img_path) as file:
    info = file.getexif()
    for tag, value in info.items():
        decoded = TAGS.get(tag, tag)
        ret[decoded] = value
    return ret