使用pyexiftool编辑/更新照片元数据的数据

时间:2015-01-07 09:01:26

标签: python metadata photo exiftool

我想使用exiftool更新照片元数据的数据,如温度传感器,高度传感器和GPS经度 - 高度的数据。首先,我尝试使用exiftool配置文件中的命令行添加这些数据的新标签,并且它可以工作。现在,我想使用python脚本更新数据然后有人告诉我我可以使用execute() method但我很困惑,但仍然不知道如何使用这些方法。

有人可以提供帮助,并在exiftool中提供python脚本示例来编辑元数据吗?

2 个答案:

答案 0 :(得分:2)

您特定问题的代码是:

import exiftool
et = exiftool.ExifTool("C:\Users\...\exiftool.exe")
et.execute("-GPSLongitude=10.0", "picture.jpg")
et.execute("-GPSLatitude=5.78", "picture.jpg")
et.execute("-GPSAltitude=100", "picture.jpg")
et.terminate()

或者,您可以在使用terminate声明时忽略with来电:

with exiftool.ExifTool("C:\Users\...\exiftool.exe") as et:
    et.execute("-GPSLongitude=10.0", "picture.jpg")
    et.execute("-GPSLatitude=5.78", "picture.jpg")
    et.execute("-GPSAltitude=100", "picture.jpg")

使用with语句确保子进程被终止,请参阅PyExifTool documentation

如果您想更改日期(创建,修改等),请确保在日期本身周围省略引号。这就是我花了一段时间才弄明白,因为没有发生错误处理:

命令行:

exiftool -FileModifyDate="2015:10:01 10:00:00" picture.jpg

的Python:

et.execute("-FileModifyDate=2015:10:01 10:00:00", "picture.jpg")

答案 1 :(得分:0)

尝试这样做:

from your_class import ExifTool, fsencode

with ExifTool(source) as et:
    params = map(fsencode, ['-Title="%s"' % title, '%s' % source_file])
    et.execute(*params)

我挣扎了一段时间,直到我终于弄清楚我必须以这种方式传递参数。如果你看一下execute_json方法,这就是我从中得到这个想法的地方。

可能有更优雅的解决方案,但这对我有用。另外,我正在使用Python 3.