"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je utiliser `os.walk()` pour créer une liste de répertoires structurée avec des indicateurs de profondeur en Python ?

Comment puis-je utiliser `os.walk()` pour créer une liste de répertoires structurée avec des indicateurs de profondeur en Python ?

Publié le 2024-11-09
Parcourir:968

How can I use `os.walk()` to create a structured directory listing with depth indicators in Python?

Navigation récursive dans les répertoires avec os.walk() en Python

Cherchant à créer des listes de répertoires plus structurées, un développeur a tenté de modifier son code pour afficher les répertoires sous forme de titres en majuscules avec des lignes pointillées indiquant la profondeur et les fichiers en dessous. Cependant, leur approche initiale a donné des résultats incomplets.

Pour relever ce défi, nous pouvons utiliser l'attribut os.sep de Python pour délimiter correctement les composants du chemin. Voici une solution améliorée :

#!/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)

Dans ce code révisé, nous divisons le chemin en utilisant os.sep comme délimiteur, qui s'adapte aux systèmes de fichiers Windows et Unix. En soustrayant 1 à la longueur du chemin, nous pouvons obtenir la profondeur du niveau actuel et afficher le nombre approprié de lignes pointillées.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3