Pour lorsque vous voulez écrire des caractères de type arborescence de fichiers au lieu d'écrire l'arborescence de fichiers réelle. Par exemple, je souhaite écrire une arborescence de fichiers dans un article publié sur Qiita, mais s'il s'agit d'une arborescence de fichiers réelle, des informations supplémentaires seront incluses, donc À utiliser lorsque vous souhaitez écrire un nombre limité de fichiers et de dossiers selon les besoins. Code source en bas
Créez un fichier et importez-le avant de l'utiliser.
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)
résultat
root/
|__ Applications/
|__ usr/
|__ username/
|__ Documents/
| |_ document.pdf
|__ Downloads/
|__ Music/
|__ Picures/
|_ icon.svg
|_ Images.png
Bien sûr, il peut être affiché à partir du milieu.
print(home)
résultat
username/
|__ Documents/
| |_ document.pdf
|__ Downloads/
|__ Music/
|__ Picures/
|_ icon.svg
|_ Images.png
Commencez par créer le plus grand répertoire. L'argument est le nom du répertoire. Si pop = False ici, l'impression automatique au moment de mkdir et touch peut être supprimée plus tard. la valeur par défaut est pop = True
root = directory('root',pop=False)
Si vous souhaitez créer un dossier, mkdir. Si vous souhaitez créer un fichier, appuyez dessus.
root.mkdir('usr')
root.mkdir('Applications')
root.touch('config')
Utilisez cd pour déplacer les répertoires (un seul peut être déplacé)
usr = root.cd('usr')
Après cela, faites mkdir et touchez de la même manière.
usr.mkdir('home')
Imprimez avec l'instance de répertoire que vous souhaitez afficher en dernier.
print(root)
c'est tout.
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