ein Problem mit IPTCInfo

Code-Stücke können hier veröffentlicht werden.
Antworten
muscat
User
Beiträge: 11
Registriert: Montag 27. März 2017, 07:32

hallo,

wollte mir eine Slideshow mit IrfanView erstellen. Die txt datei für IrfanView möchte mit Python erstellen.
Dazu wollte ich mit IPTCInfo die Orte aus der IPTC des Bildes übernehmen, um z.B. eine sliceshow nach Orten zu erstellen.
Leider komme ich mit dem IPTC Modul nicht klar.
Obwohl im IPTC die Orte eingetragen sind, erhalte ich bei jedem Bild den Warnhinweiß
File not a JPEG, trying blindScan
es handelt sich natürlich um jpg - Dateien. Ich habe auch JPEG versucht.
der blindScan bringt dann sehr unregelmäßig die Ortsdaten. Bei den meisten wird NONE ausgegeben.

Code: Alles auswählen


from iptcinfo import IPTCInfo
import sys, os

path = "c:/temp/"
f = open(path + "slide01.txt","w")


for (path, dirs, files) in os.walk(path):
    for file in files:        
        if (str(file)[-3:]) == "jpg":
            t = (os.path.join(path, file))
            info = IPTCInfo(t, force=True)
            string = " ".join((str(t), str(info.data[25]),str(info.data[92]),str(info.data[95]),str(info.data[101]),"\n"))
            f.write (string)
            print (string)
f.close

Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@muscat: ohne konkrete Fehlermeldung in Bilddateien kann man da wenig sagen.
Zum Programm:
Zeile 6: Pfade setzt man mit os.path.join zusammen.
Zeile 11: `file` ist schon ein String, der `str` aufruf ist unnötig. Die Endung bekommt man mit os.path.splitext
Zeile 12: `t` ist ein schlechter Variablenname für einen Dateinamen, die äußeren Klammern sind überflüssig.
Zeile 14: einen String aus expliziten Werten erzeugt man mit .format und nicht mit join. Dann sind auch die ganzen str-Aufrufe überflüssig.
Zeile 17: close sollte man auch aufrufen.
Antworten