Ich habe eine Funktion erstellt, die eine Baumstruktur von Dateien und Verzeichnissen in Python wie einen Baum von Befehlen ausgibt. Machen Sie sich also eine Notiz.
Geben Sie der folgenden Funktion den Pfad des Verzeichnisses, das Sie in der Baumstruktur anzeigen möchten. Da es für Mac implementiert ist, wird es nicht unterstützt, wenn Pfade nicht durch Schrägstriche getrennt sind.
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())
#Aktuelles Verzeichnis anzeigen
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))
#Holen Sie sich den Pfad der unteren Hierarchie
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
#Rekursiv anzeigen
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)
Stellen Sie sich beispielsweise den Fall vor, in dem das Verzeichnis mit dem Namen Test wie folgt konfiguriert ist.
Wenn der Baum zu diesem Zeitpunkt ausgeführt wird, sieht es so aus.
tree('/hogehoge/Test')
Ausgabeergebnis
<Test>
├<Test_01>
│ ├ccccc.txt
│ └bbbbb.txt
├<Test_02>
├<Test_03>
└aaaaa.txt
Das Ergebnis ist das gleiche, auch wenn Sie es mit einem relativen Pfad angeben.
tree('./') # /hogehoge/Mit Test ausführen
Ausgabeergebnis
<Test>
├<Test_01>
│ ├ccccc.txt
│ └bbbbb.txt
├<Test_02>
├<Test_03>
└aaaaa.txt
Recommended Posts