Editing/updating the data of photo metadata using pyexiftool

帅比萌擦擦* 提交于 2019-12-02 00:57:06

问题


I would like to update the data of photo metadata using exiftool, like data of temperature sensor, height sensor and GPS longitude-altitude. First, I've tried to add new tags of those data using command line within exiftool configuration file and it works. Now, I want to update the data using python script then someone told me I can use execute() method but I'm so confused and still don't know yet how to use those method.

Would anyone can help and give me example of python script within exiftool to edit metadata?


回答1:


The code for your specific problem is:

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()

Alternatively, you can leave out the terminate call when using the with statement:

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")

Using the with statement makes sure that the subprocess is killed, see the PyExifTool documentation


If you want to change a date (create, modify, etc.), make sure to leave out the inverted commas around the date itself. That was what took me a while to figure out since no error handling takes place:

Command-line:

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

Python:

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



回答2:


Try doing this:

from your_class import ExifTool, fsencode

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

I struggled with this for a bit until I finally figured out that I had to pass the parameters in this way. If you look at the execute_json method, this is where I got the idea from.

There might be a more elegant solution, but this is what worked for me. Also, I'm using Python 3.



来源:https://stackoverflow.com/questions/27815719/editing-updating-the-data-of-photo-metadata-using-pyexiftool

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!