icypy
icypy

Reputation: 3202

Writing exif data to the exif header using PyExifTool

Looking over a post from 2015 link on how to use PyExifTool to write to the Exif header. I gave it a try:

import exiftool
fileno=r'DSC00001.JPG
with exiftool.ExifTool() as et:
    et.execute("EXIF:GPSLongitude=100",fileno)
    et.execute("EXIF:GPSLatitude=100",fileno)

In response, I got the following error:

TypeError: sequence item 0: expected a bytes-like object, str found

Then as specified in the documentation, execute takes byte commands, so I bites, so I tried that too:

with exiftool.ExifTool() as et:
   et.execute(bytes("EXIF:GPSLongitude=100", 'utf-8'),fileno)
   et.execute(bytes("EXIF:GPSLatitude=50",'utf-8'),fileno)

But still got the same error :

TypeError: sequence item 1: expected a bytes-like object, str found

I am not sure what am I doing wrong, and if Exiftool can write to file.

Upvotes: 2

Views: 2291

Answers (2)

RAUL C.
RAUL C.

Reputation: 16

#Gracias!

    exif = r'...\exiftool.exe'
    file=br"...\FRM_20220111_134802.JPG"
    
    with exiftool.ExifTool(exif) as et:
        et.execute(b"-DateTimeOriginal=2022:10:10 10:10:10", file)
        tag = et.get_tag("EXIF:DateTimeOriginal", file)
        ...

#RCM_Chile

Upvotes: 0

archaeopteryx
archaeopteryx

Reputation: 55

The problem is that the execute method is low-level and requires bytes as inputs for both the parameters you pass and the file name. Try this:

import exiftool
pic = b"DSC00001.JPG"
with exiftool.ExifTool() as et:
    et.execute(b"-GPSLatitude=11.1", pic)
    tag = et.get_tag("EXIF:GPSLatitude", pic)
    print(tag)

Upvotes: 3

Related Questions