Für den Fall, dass Sie dateibaumähnliche Zeichen schreiben möchten, anstatt den eigentlichen Dateibaum zu schreiben. Zum Beispiel möchte ich einen Dateibaum in einen Artikel schreiben, der an Qiita gesendet wird. Wenn es sich jedoch um einen tatsächlichen Dateibaum handelt, werden zusätzliche Informationen hinzugefügt Verwenden Sie diese Option, wenn Sie nach Bedarf eine begrenzte Anzahl von Dateien und Ordnern schreiben möchten. Quellcode unten
Erstellen Sie eine Datei und importieren Sie sie, bevor Sie sie verwenden.
from filename import directory
root = directory('root')
root.mkdir('usr')
root.mkdir('Applications')
usr = root.cd('usr')
usr.mkdir('username')
home = usr.cd('username')
home.mkdir('Documents')
home.mkdir('Music')
home.mkdir('Downloads')
doc = home.cd('Documents')
doc.touch('document.pdf')
home.mkdir('Picures')
pic = home.cd('Picures')
pic.touch('Images.png')
pic.touch('icon.svg')
print(root)
Ergebnis
root/
|__ Applications/
|__ usr/
|__ username/
|__ Documents/
| |_ document.pdf
|__ Downloads/
|__ Music/
|__ Picures/
|_ icon.svg
|_ Images.png
Natürlich kann es von der Mitte aus angezeigt werden.
print(home)
Ergebnis
username/
|__ Documents/
| |_ document.pdf
|__ Downloads/
|__ Music/
|__ Picures/
|_ icon.svg
|_ Images.png
Erstellen Sie zunächst das größte Verzeichnis. Das Argument ist der Verzeichnisname. Wenn hier pop = False ist, kann der automatische Druck zum Zeitpunkt von mkdir und touch später unterdrückt werden. Standard ist pop = True
root = directory('root',pop=False)
Wenn Sie einen Ordner erstellen möchten, mkdir. Wenn Sie eine Datei erstellen möchten, berühren Sie sie.
root.mkdir('usr')
root.mkdir('Applications')
root.touch('config')
Verwenden Sie cd, um Verzeichnisse zu verschieben (nur eines kann verschoben werden)
usr = root.cd('usr')
Danach mache mkdir und berühre auf die gleiche Weise.
usr.mkdir('home')
Drucken Sie mit der Verzeichnisinstanz, die Sie zuletzt anzeigen möchten.
print(root)
das ist alles.
filetree
class directory:
def __init__(self,name,parent=None,pop=True):
self.name = name
self.parent = parent
self.childs = []
self.files = []
self.pop = pop
def mkdir(self,name):
if name in map(lambda x:x.name,self.childs):
print('this directory have same name')
else:
self.childs.append(directory(name,self))
self.childs.sort(key=lambda x:x.name.lower())
if self.pop:
if self.parent:
print(self.parent.__str__())
else:
print(self.__str__())
def cd(self,name):
for i in self.childs:
if i.name == name:
return i
raise IndexError(name)
def touch(self,name):
if name in self.files:
print('this directory have same name')
else:
self.files.append(name)
self.files.sort(key=str.lower)
if self.pop:
if self.parent:
print(self.parent.__str__())
else:
print(self.__str__())
def __str__(self):
word = ''
word += self.name
word += '/\n'
for i in range(len(self.childs)):
addlines = ' |__ '
addlines += self.childs[i].__str__()
addlines = addlines.splitlines()
word += addlines[0]
word += '\n'
if self.files or i+1 < len(self.childs):
word += '\n'.join(map(lambda x: ' | ' + x,addlines[1:]))
else:
word += '\n'.join(map(lambda x: ' ' + x,addlines[1:]))
if self.childs[i].childs or self.childs[i].files:
word += '\n'
for j in self.files:
word += ' |_ '
word += j
word += '\n'
return word
Recommended Posts