Je veux naviguer du répertoire racine vers tous les autres répertoires à l'intérieur et imprimer le même.
Voici mon code:
#!/usr/bin/python
import os
import fnmatch
for root, dir, files in os.walk("."):
print root
print ""
for items in fnmatch.filter(files, "*"):
print "..." + items
print ""
Et voici mon O / P:
.
...Python_Notes
...pypy.py
...pypy.py.save
...classdemo.py
....goutputstream-J9ZUXW
...latest.py
...pack.py
...classdemo.pyc
...Python_Notes~
...module-demo.py
...filetype.py
./packagedemo
...classdemo.py
...__init__.pyc
...__init__.py
...classdemo.pyc
Ci-dessus, .
et ./packagedemo
sont des répertoires.
Cependant, je dois imprimer le O / P de la manière suivante:
A
---a.txt
---b.txt
---B
------c.out
Ci-dessus, A
et B
sont des répertoires et le reste sont des fichiers.
Réponses:
Cela vous donnera le résultat souhaité
la source
os.walk(u".")
car les chemins peuvent être Unicode.os.path.curdir
os.path.walk
depuis un moment, c'est doncos.walk
nouveau pour moi! Fèves fraîches.basepath
égal dans votre code?essaye ça:
vous obtiendrez ceci:
la source
print(FileTreeMaker().make(args),file=tree)
mais ça me donne'charmap' codec can't encode characters in position 17-21: character maps to <undefined>
os.listdir()
aussi. Le vôtre est bien meilleur; Je n'ai pas pu obtenir la bonne récursivité, cela ne fonctionnait que sur 2 ou 3 couches de profondeur. En fin de compte, j'ai décidé de réessayer à partir de zéro avec à laos.walk()
place, ce qui, à mon avis, serait beaucoup plus approprié. Je suis surpris que vous ne l'ayez pas du tout utilisé ici.Il existe des fonctions plus appropriées pour cela dans le
os
package. Mais si vous devez utiliseros.walk
, voici ce que je proposeproduction:
la source
os.listdir
mais la solution de @ ajay l'emporte.Vous pouvez utiliser
os.walk
, et c'est probablement la solution la plus simple, mais voici une autre idée à explorer:Vous pouvez reconnaître la documentation suivante à partir de la commande TREE dans le terminal Windows:
la source
Promenade récursive dans un répertoire où vous obtenez TOUS les fichiers de tous les répertoires du répertoire courant et vous obtenez TOUS les répertoires du répertoire actuel - car les codes ci-dessus n'ont pas de simplicité (à mon humble avis):
la source
os.path.join(root, filename)
donne le chemin complet du fichier, même si le fichier est imbriqué dans plusieurs répertoires.Cela le fait pour les noms de dossier:
la source
la source
Étant donné le nom d'un dossier, parcourez toute sa hiérarchie de manière récursive.
la source
Serait le meilleur moyen
la source
dir + d
, ce qui pourrait les concaténer sans séparateur de répertoire. Il est probablement préférable d'utiliseros.path.join
pour concer des répertoires avec des noms de fichiersEssayez ceci; facile
======== SORTIE ci-dessous ========
la source
Essaye ça:
Ici, je suppose que votre chemin est "." dans lequel se trouvent le root_file et d'autres répertoires. Donc, fondamentalement, nous itérons simplement dans l'arbre en utilisant l'appel next (), car notre os.walk n'est qu'une fonction générative. En faisant cela, nous pouvons enregistrer tous les noms de répertoires et de fichiers respectivement dans dir_names et file_names.
la source
Vous pouvez également parcourir de manière récursive un dossier et répertorier tout son contenu en utilisant pathlib.Path ()
Production:
la source
la source