LÖSUNG siehe EDIT am Ende dieses Kommentars.Suchen Sie doppelte Dateien mit verschiedenen Erweiterungen mit Python
PROBLEM: Ich habe ein Verzeichnis mit einem Haufen von Bildern, mit dem Namen etwas wie unten:
- image001.nef
- image002.nef
- image003.nef
- image003 - 20170609.jpg
- image004.nef
- image005.nef
- image006 - 20170609.nef
- image007.nef
- image007 - 20170609.jpg
- image008.jpg
- image008 - 20170609.nef
Ich möchte alle Bilder finden, die ein doppelter Basisname sind (wie imageXXX) UND die Erweiterung ist JPG
Also von meiner obigen Liste gibt es nur drei Elemente, die die Kriterien zum Löschen entsprechen (ich habe fett diese Elemente).
Ich habe 2500 Bilder, also ist ein pythonischer Weg wünschenswert, den ich manuell durchlaufe.
Es fällt mir schwer, ein Beispielskript zu finden, alle, die ich gefunden habe, überprüfen das HASH oder etwas, was ich nicht für nützlich halte, da die Bilder zwar ähnlich, aber nicht identisch sind.
Prost
EDIT: Dank konnte ich Dawg die Ausgabe Ich wünsche ... hier ist der letzte Code erhalten, die für mich gearbeitet:
import os
directory = r'C:\temp'
out_directory = r'C:\temp\temp_usa_photos'
fns = os.listdir(directory)
ref_nef = {fn[0:15] for fn in fns if fn.upper().endswith('.NEF')}
print ref_nef
out_list = filter(lambda e: e[0:15] in ref_nef, [fn for fn in fns if fn.upper().endswith('.JPG')])
print out_list
for f in out_list:
input_file = os.path.join(directory, f)
output_file = os.path.join(out_directory, f)
os.rename(input_file, output_file)
Was hast du bisher gemacht? – moritzg
Sie müssen diese nur anhand des Dateinamens löschen?Ich verstehe nicht genau, was Sie daran hindert, alle Bilder zu durchlaufen, Basisnamen zu extrahieren, sie in ein Diktat/eine Liste zu schreiben und dann alle weiteren gefundenen Duplikate zu entfernen. – Euphe
@moritzg Ich habe gerade Code zu ursprünglichen Kommentar hinzugefügt – Benno