我想使用exiftool更新照片元数据的数据,如温度传感器,高度传感器和GPS经度 - 高度的数据。首先,我尝试使用exiftool配置文件中的命令行添加这些数据的新标签,并且它可以工作。现在,我想使用python脚本更新数据然后有人告诉我我可以使用execute() method但我很困惑,但仍然不知道如何使用这些方法。
有人可以提供帮助,并在exiftool中提供python脚本示例来编辑元数据吗?
答案 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.