Я использую скрипт из этого ответа . Я сделал одну незначительную модификацию, которая указана ниже.
Модификация 1
sentinel = "{ready}\n"
def __init__(self, executable="/usr/local/bin/"):
self.executable = executable
def __enter__(self):
app = "exiftool"
command_line = [app, "stay_open", "True", "-@", "-"]
self.process = subprocess.Popen(command_line, executable=app, universal_newlines=True,
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
return self
Остальная часть ответа, размещенная в исходной ссылке, полностью не изменилась.
Я называю вышеизложенное следующим образом:
def main():
filename = r"/Volumes/backup/2017/MOV_0004.mp4"
with ExifTool.ExifTool() as e:
metadata = e.get_metadata(*filename)
json_str = json.dumps(metadata, indent=2)
print (json_str)
По какой-то странной причине это прекрасно работает на Windows, но я просто не могу заставить его работать на Ма c.
Чтобы заставить это работать на Windows Я меняю одну строку sentinel = "{ready}\n"
. Я использую python 3.7.1 для Ма c и python 3.6.1 для Windows.
Буду признателен за любой совет.