Da es mit dem exiftool nicht funktioniert hat aus *.dng Dateien den Wert des exif-Feldes Headline in die xmp-Datei als Title hinein zu schreiben. wollte ich das jetzt mit einem Python-Programm versuchen. Dabei kommt jetzt das:
Code: Alles auswählen
File "/home/mario/Develop/eclipse-workspace/Darktable/DTFunctions.py", line 23
except as err:
^^
SyntaxError: invalid syntax
Code: Alles auswählen
import os
import piexif
from os import listdir
from os.path import isfile, join
import PIL
import sys
from PIL import Image
class DTFunctions:
def convertValue2Xmp(self, folderPath, sourceItem, destItem):
items = listdir(folderPath)
dirlist = []
exifListPic = ""
exifListXmp = ""
for item in items:
ext = os.path.splitext(item)
if(item.isfile(item) and ext != ".xmp"):
picFilePath = folderPath.join("/" + item);
try:
imagePic = PIL.Image.open(picFilePath)
exifListPic = piexif.load(imagePic.info['exif'])
except FileNotFoundError:
sys.stderr.print("***File not found ***")
except as err:
sys.stderr.print("*** Unexpected error ***", err)
else:
xmpFilePath = picFilePath.join(".xmp")
try:
imageXmp = PIL.Image.open(xmpFilePath)
exifListXmp = piexif.load(imageXmp.info['exif'])
except as e:
sys.stderr.print(("*** Unexpected error at " + xmpFilePath + ": ", e)
else
try:
sourceValue = exifListPic[sourceItem]
destValue = exifListXmp[destItem]
if(destValue == "" && sourceValue != "")
exifListXmp[destItem] = sourceValue
exifDataXmp = piexif.dump(exifListXmp)
image.save('_%s' % filename, "dng", exif=exifDataXmp)
except as e:
sys.stderr.print(("*** Unexpected error ", e)
elif isdir(item) || islink(item):
dirlist.append(item)
for item in dirlist:
convertValue2Xmp(folderPath+"/"+item)
def ListAll (self, pFolder):
try:
for filename in listdir(pFolder):
basename, ext = os.path.splitext(filename)
if filename == 'ae0002.dng':
print("***** ",filename," *****")
img = PIL.Image.open(Folder + "/" + filename)
exifData = img.getexif().items()
for key, value in exifData:
print(hex(key), value)
except as e:
sys.stderr.print("Unexpected error occured:", e)