1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| >>> class Tree(object):
__slots__=('tree','files','folders')
def __init__(self):
self.tree={}
self.folders=[]
self.files=[]
def addFolder(self,name):
self.tree[name]=Tree()
bisect.insort(self.folders,name)
def addFile(self,name):
self.tree[name]=None
bisect.insort(self.files,name)
def addFolders(self,itr):
for x in itr:
self.addFolder(x)
def addFiles(self,itr):
for x in itr:
self.addFiles(x)
def __getitem__(self,key):
return self.tree[key]
def __setitem__(self,key,val):
self.tree[key]=val
def text(self):
for fold in self.folders:
yield '+--#[ %s ]'%fold
line_next='| '
for lns in self.tree[fold].text():
yield line_next+lns
yield '|'
for fil in self.files:
yield '+- %s'%fil
>>> def mapFolder(tree, dirname):
'''sert scanner un dossier et ses sous-dossiers et reconstituer leur arbo dans le Tree object passé en param'''
for fnm in os.listdir(dirname):
if os.path.isdir(dirname+'/'+fnm):
tree.addFolder(fnm)
mapFolder(tree[fnm],dirname+'/'+fnm)
else:
tree.addFile(fnm) |
Partager