我正在使用exifread
从照片中获取一些Exif信息。
目前,我正在尝试获取GPS纬度和经度,我可以这样做:
def main():
images = image_paths(IMAGE_FOLDER) # folder is say "Sample Photos\\"
info = {}
for img in images:
_lat, _lon = "", ""
tags = exifread.process_file(open(img,'rb'))
for i in tags.keys():
if i == "GPS GPSLatitude":
print(i, ":::", tags[i])
这将打印我所期望的,它们的关键名称和值:
全球定位系统GPSLatitude::32,52,66443/1250 全球定位系统GPSLatitude::32,52,531699/10000 全球定位系统GPSLatitude::32,52,531699/10000 全球定位系统GPSLatitude::32,52,132789/2500 全球定位系统GPSLatitude::32,52,265817/5000
但是,为了跳过这个循环并快速获取键/值对,我尝试了(这取代了for i ...
循环)
_lon = tags["GPS GPSLatitude"]
但我发现了一个错误:
KeyError:“GPS GPSLatitude”
如何访问"GPS GPSLatitude“(和"GPS GPSLongitude")而不遍历tags
的键?
编辑:
tags
是<class 'dict'>
发布于 2018-05-10 20:04:42
是否可能有些标签没有键'GPS GPSLatitude'
?
也许你可以试试
_lat = tags.get('GPS GPSLatitude', '')
这样,如果_lat
存在,它将被设置为纬度值,否则它将被设置为空字符串。
发布于 2018-05-10 20:06:13
如果任何图像没有该标记,则需要处理该异常以防止崩溃。例如:
def main():
images = image_paths(IMAGE_FOLDER) # folder is say "Sample Photos\\"
info = {}
for img in images:
_lat, _lon = "", ""
tags = exifread.process_file(open(img,'rb'))
try:
_lon = tags["GPS GPSLongitude"]
# _lat = tags["GPS GPSLatitude"] # presumably you also want this
# do something with these... perhaps add to info
except KeyError:
pass # move on
https://stackoverflow.com/questions/50280590
复制相似问题