Comment puis-je utiliser os.walk() pour créer une arborescence de répertoires visuellement structurée en Python ?

Patricia Arquette
Libérer: 2024-11-08 22:06:02
original
724 Les gens l'ont consulté

How can I use os.walk() to create a visually structured directory tree in Python?

Utiliser os.walk() pour la traversée récursive de répertoires en Python

Naviguer dans les répertoires de manière récursive et répertorier leur contenu est une tâche courante dans la programmation Python . La fonction os.walk() fournit un moyen efficace d'atteindre cet objectif.

Code original

Le code suivant montre comment utiliser os.walk() pour naviguer du répertoire racine vers tous les sous-répertoires et affiche leur contenu :

#!/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("")
Copier après la connexion

Ce code répertorie effectivement le contenu du répertoire courant et de ses sous-répertoires, mais il ne fait pas la différence entre répertoires et fichiers.

Sortie souhaitée

Cependant, la sortie souhaitée nécessite l'affichage des répertoires en tant que sous-dossiers et des fichiers en tant qu'éléments dans ces dossiers :

A
---a.txt
---b.txt
---B
------c.out
Copier après la connexion

Code révisé

Pour obtenir le résultat souhaité, le code révisé suivant utilise os.path.basename() pour obtenir le chemin du répertoire :

#!/usr/bin/python

import os

# traverse root directory, and list directories as dirs and files as files
for root, dirs, files in os.walk("."):
    path = root.split(os.sep)
    print((len(path) - 1) * '---', os.path.basename(root))
    for file in files:
        print(len(path) * '---', file)
Copier après la connexion

Ce code divise d'abord le chemin en utilisant os.sep pour identifier les niveaux de répertoire. Il imprime ensuite le nom du répertoire avec un nombre de tirets correspondant à sa profondeur, suivi d'une liste de fichiers dans ce répertoire avec un tiret supplémentaire pour chaque niveau.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal