首先,我否认我是编程领域的新手,工作需要我继续使用Python。我的经验仅限于刚刚完成SANS 573。
我正在尝试从各种格式的图像文件中获取日期和时间。请原谅我的例子,我只是用它来试着让它工作。
这就是我目前所拥有的:
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]>>> corvette(L88)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in corvette
KeyError: 36867
>>> 我正在从桌面运行函数,这是我当前保存图像的地方。
我不理解错误消息。
KeyError: 36867也让我感到困惑,因为当我查找标签时,这就是我发现的,也是我刚刚完成课程时的工作方式。
发布于 2020-04-05 18:00:23
_getexif()方法返回一个称为字典的Python数据结构。
字典中的值通过它们的键来访问。在本例中,键是数字。并不是所有的键都是强制的。您可以使用keys()方法来查看存在哪些类型。尝试:
print(info.keys())查看哪些密钥存在。
您还可以测试密钥是否存在:
if 36867 in info:
return info[36867]
else:
return None请注意,这些数字和它们的exif标记名之间有一个映射。你可以用它来创建一个可读的字典。
请注意,并非所有JPEG图像都具有EXIF信息。在这种情况下,_getexif()方法返回None,所以您应该考虑到这一点并对其进行测试:
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 rvhttps://stackoverflow.com/questions/61038610
复制相似问题