Arborescence de sortie des fichiers en Python

Aperçu

J'ai créé une fonction pour afficher la structure arborescente des fichiers et des répertoires sur Python comme un arbre de commandes, alors prenez note.

Conclusion

Donnez à la fonction suivante le chemin du répertoire que vous souhaitez afficher dans l'arborescence. Comme il est implémenté pour Mac, il n'est pas pris en charge lorsque les chemins ne sont pas séparés par des barres obliques.

import pathlib
import glob
import os

def tree(path, layer=0, is_last=False, indent_current=' '):
    if not pathlib.Path(path).is_absolute():
        path = str(pathlib.Path(path).resolve())
    
    #Afficher le répertoire actuel
    current = path.split('/')[::-1][0]
    if layer == 0:
        print('<'+current+'>')
    else:
        branch = '└' if is_last else '├'
        print('{indent}{branch}<{dirname}>'.format(indent=indent_current, branch=branch, dirname=current))
    
    #Obtenez le chemin de la hiérarchie inférieure
    paths = [p for p in glob.glob(path+'/*') if os.path.isdir(p) or os.path.isfile(p)]
    def is_last_path(i):
        return i == len(paths)-1
    
    #Afficher récursivement
    for i, p in enumerate(paths):
        
        indent_lower = indent_current
        if layer != 0:
            indent_lower += '  ' if is_last else '│ '
            
        if os.path.isfile(p):
            branch = '└' if is_last_path(i) else '├'
            print('{indent}{branch}{filename}'.format(indent=indent_lower, branch=branch, filename=p.split('/')[::-1][0]))
        if os.path.isdir(p):
            tree(p, layer=layer+1, is_last=is_last_path(i), indent_current=indent_lower)

Par exemple, considérons le cas où le répertoire appelé Test est configuré comme suit.

Quand tree est exécuté à ce moment, il ressemble à ceci.

tree('/hogehoge/Test')

Résultat de sortie


<Test>
 ├<Test_01>
 │ ├ccccc.txt
 │ └bbbbb.txt
 ├<Test_02>
 ├<Test_03>
 └aaaaa.txt

Le résultat est le même même si vous le spécifiez avec un chemin relatif.

tree('./') # /hogehoge/Exécuter avec test

Résultat de sortie


<Test>
 ├<Test_01>
 │ ├ccccc.txt
 │ └bbbbb.txt
 ├<Test_02>
 ├<Test_03>
 └aaaaa.txt

Recommended Posts

Arborescence de sortie des fichiers en Python
Gestion des fichiers JSON en Python
Exporter et exporter des fichiers en Python
Structure de type langage C en Python
Sortie japonaise avec Python
Bases de python: sortie
Sortie du nombre de cœurs de processeur en Python
Résumé de la façon d'importer des fichiers dans Python 3
Sortie sous la forme d'un tableau python
Évaluation de la vitesse de sortie du fichier CSV en Python
Sortie de la structure de table dans Django
Jugement d'équivalence d'objet en Python
Recherche récursive de fichiers et de répertoires en Python et sortie
Implémentation du tri rapide en Python
Lire la sortie Fortran avec python
Un ensemble de fichiers de script qui font wordcloud avec Python3
Translocation de fichiers CSV avec Python Partie 1
Manipulation des pixels d'image en Python
Sortie de la liste du vendredi Premium 2017 en Python
Diviser timedelta dans la série Python 2.7
Manipuler des fichiers et des dossiers en Python
Échappement automatique des paramètres MySQL en python
Téléchargez des fichiers Google Drive en Python
Rendre la sortie standard non bloquante en Python
Implémentation du jeu de vie en Python
Affichage de la forme d'onde audio en Python
Compilateur en Python: arborescence de syntaxe PL / 0
Trier les gros fichiers texte en Python
Lire des fichiers en parallèle avec Python
Implémentation Python de l'arborescence de segments non récursive
La loi des nombres en python
Implémentation du tri original en Python
Algorithme (arborescence de segments) en Python (s'entraîner)
Brouillage réversible d'entiers en Python
Extraire des chaînes de fichiers avec Python
Comment connaître la structure interne d'un objet en Python
Ecrire diverses formes d'arbres phylogénétiques en Python à l'aide de la boîte à outils ETE
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Jetez un œil à l'arborescence des exceptions intégrée dans Python 3.8.2
Obtenez une liste de fichiers dans un dossier avec python sans chemin
Conversion de la chaîne <-> date (date, datetime) en Python
Entrée / sortie de données en Python (CSV, JSON)
Vérifiez le comportement du destroyer en Python
Pratique d'utilisation de ceci en Python (mauvais)
Théorie générale de la relativité en Python: Introduction
Trouver des fichiers comme Linux Find en Python
Afficher une liste d'alphabets en Python 3
Comparaison des modules de conversion japonais en Python3
Résumé de diverses instructions for en Python
Tapez les annotations pour Python2 dans les fichiers stub!
Référence du fichier INI en Python ou Ruby
Le résultat de l'installation de python sur Anaconda
Automatisez les tâches en manipulant des fichiers en Python
Modèles Gang of Four (GoF) en Python
Lire et écrire des fichiers JSON avec Python
Principes de base pour exécuter NoxPlayer en Python
UnicodeEncodeError lutte avec la sortie standard de python3
Exemple de gestion des fichiers eml en Python
Remplacement en bloc des chaînes dans les tableaux Python