List files recursivly with python

Document Actions
Réponses: 1   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

List files recursivly with python

Posté par boblepirate le 03/07/2010 10:51
Bonjour j'utilise un programme sous Linux (gdesklets) pour ceux qui connaissent. l'un des "desklets" permet de visionner les photos d'un répertoire et des sous-répertoire.

Pour ce faire il fonctionne à partir du script http://snippets.dzone.com/posts/show/644 .

Utilisant picasa pour l'archivage et le traitement de mes photos, celui-ci crée dans les répertoires des photos une sous répertoire "Originals" pour stocker les originaux. Je souhaite exclure ces sous-répertoire de la liste.

Comment faire, j'ajoute que je suis novice en programmation python.

Voici le code :
code:
# Taken from http://snippets.dzone.com/posts/show/644
import os, stat, types, fnmatch

def walktree (top = ".", depthfirst = True):
 names = os.listdir(top)
 if not depthfirst:
  yield top, names
 for name in names:
   try:
   st = os.lstat(os.path.join(top, name))
  except os.error, os.path.join("Originals"):
   continue
  if stat.S_ISDIR(st.st_mode):
   for (newtop, children) in walktree (os.path.join(top, name), depthfirst):
    yield newtop, children
 if depthfirst:
  yield top, names

def make_directory_list (directory):
 mylist=[code]
 for (top, names) in walktree(directory):
  #print "searching folder %s" % (top,)
  for name in names:
   #if fnmatch( name, "*.jpg" ) | fnmatch( name, "*.gif" ) | fnmatch( name, "*.jpeg" ) | fnmatch( name, "*.png" )
   if fnmatch.fnmatch( name.lower(), "*.jpg" ) | fnmatch.fnmatch( name.lower(), "*.png" ) | fnmatch.fnmatch( name.lower(), "*.gif" ) | fnmatch.fnmatch( name.lower(), "*.jpeg" ):
    mylist.append(os.path.join(top, name))
 return mylist[/code]

Re: List files recursivly with python

Posté par e-vidence le 04/07/2010 12:41
Ici, Walktree est une fonction qui est appelée récursivement :
1 - elle liste tous les fichiers d'un dossier
2 - pour chaque fichier, elle verifie si c'est une image et enregistre son chemin si c'est le cas
3 - si c'est un dossier, elle s'appelle elle même avec le chemin de ce dossier en paramètre

Pour réussir à ne pas prendre en compte les sous dossiers, il suffit que quand elle tombe sur un dossier, elle ne fasse rien.

Ne rien faire se dit "pass" en Python.

Avec ces informations, tu devrais pouvoir t'en sortir.

Python.org : Le site officiel du langage Python.
Zope.org : Le site web officiel de Zope.
Daily Python-URL : Actus de l'univers Python.
Tribute to Zyons : Zyons notre ami et membre fondateur de l'Afpy, nous quittait en 2005.