我想使用exiftool更新照片元数据的数据,例如温度传感器、高度传感器和GPS经度-纬度等数据。首先,我尝试在exiftool配置文件中使用命令行添加这些数据的新标签,并且它有效。现在,我想使用python脚本更新数据,然后有人告诉我可以使用execute()方法,但我很困惑,还不知道如何使用这些方法。
有人能帮忙并给出一个在exiftool中编辑元数据的Python脚本示例吗?
有人能帮忙并给出一个在exiftool中编辑元数据的Python脚本示例吗?
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()
另外,使用with
语句时,您可以省略terminate
调用:
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文档
exiftool -FileModifyDate="2015:10:01 10:00:00" picture.jpg
Python:
et.execute("-FileModifyDate=2015:10:01 10:00:00", "picture.jpg")
尝试这样做:
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。
execute()
传递一个可变数量的字符串参数,就像你之前在命令行版本中添加新标签时所用的一样。 - martineau