leider versuche ich vergebens ein Problem in meinem Skript zu beheben. Könntet ihr mir vielleicht einen kleinen Denkanstoß zu kommen lassen?
Funktionsbeschreibung:
Blöd wie ich bin habe ich meine Bilder - Festplatte gelöscht und danach versucht alles wieder herzustellen. Dies hat auch zum Größtenteil geklappt, aber alle Bilder hießen jetzt nach folgendem Prinzip 686468416321.jpg ... Faul wie man nun mal bei 1000+ Bildern ist, dachte ich mir, dass ich einfach die Bilder von Python sortieren lasse.... Funktioniert so weit ganz gut.... So ist der Ablauf:
Ablauf:
-> Skript rennt durch alle Ordner und Unterordner von dem Pfad in der Settings.ini
-> Sucht und findet .jpg-Dateien ( Hoffe auch irgendwann PNG / AVI / etc hinzuzufügen)
-> Schaut in den EXIF - Metadaten ( Python-Library: pyexiv2 ) und wandelt das DateTime um in einen lesbaren String
-> Nennt das Bild um ( z.B. 2016-05-13-17-34-22.jpg ) und verschiebt es in den Skript-Ordner
-> Rennt weiter zum nächsten, bis alle jpgs weg sind
Problem:
Dies funktioniert bei dem Beispiel Ordner (gepackt im Beispiel.7z) und zuhause auch bei ein paar Bildern. Beim Beispiel-Ordner einwandfrei, aber zuhause nur knapp 20 Bilder lang und dann war Schluss. Andere Ordner / Bilder entfernen haben leider nicht geholfen. Frage ist nun, habe ich einen Denkfehler? :K
Könntet ihr mir helfen? Gerne nehme ich auch Verbesserungen für meinen Code entgegen. Ach ja, das ganze soll auf Windows 7 laufen.
URL zum Github Projekt: https://github.com/harlekyn/Py_Bilder
Beste Grüße und euch noch nen schönes Wochenende!
Euer harlekyn
PS: Ich bitte von Sprüchen wie "Google doch" und anderen Sprüchen abzusehen.
Code: Alles auswählen
import os
import re
import shutil
import pyexiv2 # ExIf Daten auslesen
import ConfigParser
#
## Ort auslesen
config = ConfigParser.ConfigParser()
config.read('settings.ini')
ort = config.get('Allgemein', 'Ort')
typ = config.get('Allgemein', 'Typ')
print '[*] Einstellung: ' + ort
print '[*] Einstellung: ' + typ
#
## Funktion: Umbenennen
def umbenennen(original):
metadata = pyexiv2.ImageMetadata(original)
metadata.read()
tag = metadata['Exif.Image.DateTime']
date_pic = tag.value
neu = '20' + date_pic.strftime("%y-%m-%d-%H-%M-%S")
try:
os.rename(original, neu + '.jpg')
except OSError as e:
print ('[-] Error: %s' % e)
try:
os.rename(original, neu + '_Copy.jpg')
except OSError as e:
print ('[-] 2.Error: %s' % e)
try:
os.rename(original, neu + '_Copy2.jpg')
except OSError as e:
print ('[-] 3.Error: %s' % e)
#
## Ordner durchsuchen
for root, path, files in os.walk(ort):
for filename in files:
string1 = str(filename) # Umwandeln in String
string2 = re.sub(r'\'', '', string1) # Entfernen von '
string3 = re.sub(r'\[', '', string2) # Entfernen von [
string4 = re.sub(r'\]', '', string3) # Entfernen von ]
if string4.endswith(typ):
datei = os.path.join(root, string4)
print '[*] Datei: ' + datei
umbenennen(datei)
