Я создал функцию, которая использует PIL для извлечения всех данных EXIF в изображении, затем мне нужно изменить код, чтобы я дал программе папку, полную изображений, и код должен извлекать данные EXIF из каждого изображение внутри и вывод в файл. Я не уверен, как это сделать.
Я попытался использовать цикл for в моей функции, надеясь, что он будет перебирать заданные изображения и возвращать их одно за другим, но мне не повезло.
import argparse
from PIL import Image
from PIL.ExifTags import TAGS
def getMetaData(imgname, out):
try:
metaData = {}
imgFile = Image.open(imgname)
print ("Getting meta data...")
info = imgFile._getexif()
if info:
print ("found meta data!")
for (tag, value) in info.items():
tagname = TAGS.get(tag, tag)
metaData[tagname] = value
if not out:
print (tagname, value)
if out:
print ("Outputting to file...")
with open(out, 'w') as f:
for (tagname, value) in metaData.items():
f.write(str(tagname)+"\t"+\
str(value)+"\n")
except:
print ("Failed")
def Main():
parser = argparse.ArgumentParser()
parser.add_argument("imageName", help="name of an image file.")
print(parser)
parser.add_argument("outputFile", help="dump data out to file")
print(parser)
args = parser.parse_args()
if args.imageName:
print("hello")
getMetaData(args.imageName, args.outputFile)
else:
print (parser.usage)
if __name__ == '__main__':
Main()