Я думаю, что вы не понимаете документацию. Если мы посмотрим на документы по методу execute_json
, он говорит:
Выполнить заданный пакет параметров и проанализировать вывод JSON.
Этот метод похож на : пе: меты: execute()
. Он автоматически добавляет параметр -j
для запроса JSON вывода из exiftool
и анализирует вывод. Возвращаемое значение представляет собой список словарей, отображающих имена тегов на соответствующие значения.
Это ясно говорит о том, что модуль exiftool
анализирует выходные данные , то есть он читает данные JSON и возвращает список Python структур данных.
Аналогично, документация для get_tags_batch
гласит:
Формат возвращаемого значения такой же, как и для: py: meth: execute_json()
.
Итак, когда вы делаете это ...
file_names = getListOfFiles(dir_name)
with exiftool.ExifTool() as e:
metadata = e.get_tags_batch(tags, file_names)
f = open(log_file, "w")
f.write(str(metadata))
f.close()
... вы просто записываете строковое представление этих данных в файл (т. Е. Вывод str(metadata)
). Если вы действительно хотите записать JSON данные, вам потребуется import json
, а затем:
with open(log_file, 'w') as fd:
json.dump(metadata, log_file)
Для чтения в этом файле мы будем использовать json.load
:
with open(log_file, 'r') as fd:
metadata = json.load(fd)
Это дает нам оригинальный список словарей. Например, мы можем перебрать его так:
for imageinfo in metadata:
print('CreateDate:', imageinfo.get('EXIF:CreateDate', 'unknown'))
Вот полный пример кода, который я использовал для проверки этого:
import exiftool
import json
import os
file_names = [f'images/{fn}' for fn in os.listdir('images')]
tags = ["File Name", "CreateDate"]
with exiftool.ExifTool() as e:
metadata = e.get_tags_batch(tags, file_names)
with open('md.json', 'w') as fd:
json.dump(metadata, fd)
with open('md.json', 'r') as fd:
metadata = json.load(fd)
for imageinfo in metadata:
print('Created: {}'.format(
imageinfo.get('EXIF:CreateDate', 'unknown')
))
Запуск этого в моем локальном каталоге images
, который содержит 7 случайных изображений, в результате:
Created: 2020:01:26 15:06:12
Created: 2020:04:16 18:13:48
Created: unknown
Created: unknown
Created: 2020:01:26 15:05:54
Created: 2020:04:16 18:07:41
Created: 2020:01:26 15:07:58