Cherche Algo tree (récursif)
Kult
-
modulo22 Messages postés 12 Statut Membre -
modulo22 Messages postés 12 Statut Membre -
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...
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:
- Cherche Algo tree (récursif)
- Family tree builder - Télécharger - Généalogie
- Knowledge tree - Télécharger - Gestion de fichiers
- Legacy family tree - Télécharger - Généalogie
- Tree size - Télécharger - Gestion de fichiers
- Agelong tree - Télécharger - Généalogie
1 réponse
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+'| ')
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+'| ')