2016-08-09 2 views
0

J'ai écrit un programme pour parcourir les images contenues dans un dossier et extraire les données EXIF ​​intégrées. Actuellement, j'utilise le code ci-dessous pour obtenir des chemins pour tous les fichiers à l'intérieur d'un dossier, la variable 'nom_de_plans' est entrée par l'utilisateur. La liste créée est ensuite utilisée par le programme pour parcourir toutes les images.Lecture récursive d'une arborescence de dossiers et détermination des dossiers contenant des fichiers

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

Maintenant, je veux ajouter un peu de fonctionnalité, qui est la capacité de regarder à travers une arborescence de dossiers et retourner uniquement les dossiers avec des images/fichiers en eux. Cette liste pourrait ensuite être passée dans le morceau de code ci-dessus pour faire le reste. J'ai juste besoin d'un pointeur pour savoir où chercher pour développer cela.

également comment pourrais-je choisir et sortie uniquement les fichiers d'image, en utilisant endswith(.jpg) sur le chemin du fichier ne fonctionne pas en raison de la casse.

+2

Salut, bienvenue à stackoverflow. Je pense que votre question est trop large pour ce site. Fondamentalement, vous demandez aux utilisateurs de concevoir votre algorithme pour vous. –

+0

Je suppose que pour arbre trought récursive marche dir sera bon ** os.walk **, Pour le cas sensitivnes utiliser simplement to_lower fonction au nom du fichier et l'extension comparewith lowecase –

+0

Edité ma question Konstantin. Merci Take Care va se pencher sur elle. – Utkarsh

Répondre

1

Vous pouvez os.walk + mimetypes.guess_type comme si

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

Vous pouvez contourner la casse en appliquant la méthode de chaîne .lower() aux deux chaînes avant de les comparer.