首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3回溯问题

Python3回溯问题
EN

Stack Overflow用户
提问于 2020-04-05 13:56:24
回答 1查看 28关注 0票数 0

首先,我否认我是编程领域的新手,工作需要我继续使用Python。我的经验仅限于刚刚完成SANS 573。

我正在尝试从各种格式的图像文件中获取日期和时间。请原谅我的例子,我只是用它来试着让它工作。

这就是我目前所拥有的:

代码语言:javascript
复制
from pathlib import Path
from PIL import Image

L88 = Path("L88.jpg")

def corvette(L88):
    imgobj=Image.open(L88)
    info=imgobj._getexif()
    return info[36867]
代码语言:javascript
复制
>>> corvette(L88)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in corvette
KeyError: 36867
>>> 

我正在从桌面运行函数,这是我当前保存图像的地方。

我不理解错误消息。

KeyError: 36867也让我感到困惑,因为当我查找标签时,这就是我发现的,也是我刚刚完成课程时的工作方式。

EN

回答 1

Stack Overflow用户

发布于 2020-04-05 18:00:23

_getexif()方法返回一个称为字典的Python数据结构。

字典中的值通过它们的键来访问。在本例中,键是数字。并不是所有的键都是强制的。您可以使用keys()方法来查看存在哪些类型。尝试:

代码语言:javascript
复制
print(info.keys())

查看哪些密钥存在。

您还可以测试密钥是否存在:

代码语言:javascript
复制
if 36867 in info:
    return info[36867]
else:
    return None

请注意,这些数字和它们的exif标记名之间有一个映射。你可以用它来创建一个可读的字典。

请注意,并非所有JPEG图像都具有EXIF信息。在这种情况下,_getexif()方法返回None,所以您应该考虑到这一点并对其进行测试:

代码语言:javascript
复制
from PIL import Image, ExifTags


def image_info(path):
    imgobj = Image.open(path)
    info = imgobj._getexif()
    if info is None:
        return None
    rv = {
        ExifTags.TAGS[key]: info[key]
        for key in info.keys()
    }
    return rv
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61038610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档