代码:
@Data
public class ResponsePayload {
@JsonProperty("StatusCode")
private String statusCode;
@JsonAnySetter
private Map<String, Object> properties = new HashMap<>();
@JsonIgnore
public Object get(String key) {
return properties.get(key);
}
}
错误:
#!/usr/bin/python3
from PIL import Image, ExifTags
img = Image.open("/root/Bilder/sysPics/schwarz-weiß-Karte.jpg")
for i, j in img._getexif().items():
if i in ExifTags.TAGS:
print(ExifTags.TAGS[i] + " - " + str(j))
有人可以帮助我吗?我从未使用过PIL库,但看到了一个教程,
Traceback (most recent call last):
File "python-tool.py", line 7, in <module>
for i, j in img._getexif().items():
AttributeError: 'NoneType' object has no attribute 'items'
方法的工作原理:
https://www.youtube.com/watch?v=-PiR5SX4Mxo&list=PLNmsVeXQZj7onbtIXvxZTzeKGnzI6NFp_&index=8
他的代码和我的代码没有区别,我不敢相信他们在最后一个补丁中切断了.items()
方法。
答案 0 :(得分:1)
首先,您不应该依赖诸如_get_exif()
之类的内部函数,因为它们的实现可以随时更改,并且通常不适合公众使用。 (请参阅PEP8命名约定中的_single_leading_underscore
。
2,您应该考虑并非所有图像都具有EXIF数据。尝试获取EXIF数据可能会None
。因此,问题不是问题.items()
,而是您的_get_exif()
返回了None
。您的代码无法处理这种情况,您始终假设_get_exif()
返回dict
。
现在,要解决您的问题,对于Python3.x(我有Python3.6.8)和PIL(以Pillow,Pillow==6.0.0
安装),Image
对象现在提供了一个公共{{1} }可以使用的方法。如果图像没有EXIF数据或getexif()
,则返回类型为None
。
<class 'PIL.Image.Exif'>