2016-08-09 3 views
0

Ich habe ein Programm geschrieben, um Bilder in einem Ordner zu durchsuchen und die eingebetteten EXIF-Daten zu extrahieren. Momentan benutze ich den folgenden Code, um Pfade für alle Dateien innerhalb eines Ordners zu erhalten, die Variable 'Ordnername' wird vom Benutzer eingegeben. Die erstellte Liste wird dann vom Programm zum Durchlaufen aller Bilder verwendet.rekursiv lesen Sie eine Ordnerstruktur und bestimmen, welche Ordner Dateien haben

file_names = glob(join(expanduser('~'),'Desktop',folder_name,'*')) 

Jetzt habe ich ein wenig Funktionalität hinzufügen wollen, das heißt die Fähigkeit, durch einen Verzeichnisbaum zu betrachten und nur die Ordner mit Bildern/Dateien in sie zurückzukehren. Diese Liste könnte dann in das obige Bit des Codes eingegeben werden, um den Rest zu erledigen. Ich brauche nur einen Hinweis, wohin ich schauen muss, um das zu entwickeln.

Auch wie könnte ich nur die Bilddateien auswählen und ausgeben, mit endswith(.jpg) auf den Dateipfad nicht funktioniert, wegen der Berücksichtigung der Groß-/Kleinschreibung.

+2

Hallo, zu begrüßen Stackoverflow. Ich denke deine Frage ist zu breit für diese Seite. Im Grunde bitten Sie die Benutzer hier, Ihren Algorithmus für Sie zu entwerfen. –

+0

Ich denke, für rekursives Gehen trought dir Baum wird gut sein ** os.walk **, Für den Fall sensitivnes nur to_lower Funktion bei Dateinamen verwenden und mit Lowcase Erweiterung vergleichen –

+0

Bearbeitete meine Frage Konstantin. Thanks Take Care wird sich darum kümmern. – Utkarsh

Antwort

1

Sie können os.walk + mimetypes.guess_type wie so versuchen

import os 
import os.path 
import mimetypes 
top="." 
imagefiles=[] 
for root, dirs, files in os.walk(top): 
    for fn in files: 
     t,e= mimetypes.guess_type(fn, strict=False) 
     if t.startswith("image/"): 
      imagefiles.append(os.path.join(root,fn) 
0

Sie können die Groß-/Kleinschreibung berücksichtigen, indem Sie die Zeichenfolge .lower() auf beide Zeichenfolgen anwenden, bevor Sie sie vergleichen.

Verwandte Themen