Cherche Algo tree (récursif)

Fermé
Kult - 17 mai 2002 à 14:28
modulo22 Messages postés 12 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 31 décembre 2008 - 3 janv. 2008 à 13:22
Salut,

Je cherche l'algo permettant de faire la commande tree en C. J'ai beau réfléchir dans ma tête en récursif, je n'arrive pas à modifier ce bout de code en python qui permet de faire tree! Le problème c'est qu'il n'est pas possible de faire plus de 2 espaces puisque quand on fait la récursivité on incrémente prefix de '| '.
Or souvent, on a des cas où l'espace DOIT être plus important que 2 espaces, et avec ce système d'incrémentation de préfixe, c'est pas possible!
Qqn a une idée ?

Voila le code en question:

from os import listdir
from os.path import isdir, join
def affiche_arbre(repertoire='.', prefix=''):
sousrep = listdir(repertoire)
for f in sousrep:
if f is sousrep[-1]:
# pour la dernière entrée du répertoire, on met un `
# plutôt qu'un |
print prefix + '`-- ' + f
else:
print prefix + '|-- ' + f
fullname = join(repertoire,f)
if isdir(fullname):
affiche_arbre(fullname,prefix+'| ')

Petite explication:
listdir() renvoit le contenu d'un répertoire
join() sert à combiner des morceaux de chemin dans un système de fichier
avec les bons séparateurs et tout et tout
isdir() renvoie vrai si l'argument est un répertoire, et faux sinon

Merci, je commence à désespérer...
A voir également:

1 réponse

modulo22 Messages postés 12 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 31 décembre 2008 5
3 janv. 2008 à 13:22
salut,

peut-être ça?
dsl pour la syntaxe, je ne connais pas le language

from os import listdir
from os.path import isdir, join
def affiche_arbre(repertoire='.', prefix=''):
sousrep = listdir(repertoire)
for f in sousrep:
fullname = join(repertoire,f)
if f is sousrep[-1]:
# pour la dernière entrée du répertoire, on met un `
# plutôt qu'un |
print prefix + '`-- ' + f
if isdir(fullname):
affiche_arbre(fullname,prefix.substring(0,prefix.length-1)+' | ')
else:
print prefix + '|-- ' + f
if isdir(fullname):
affiche_arbre(fullname,prefix+'| ')
0