In [8]:
import os
from os import listdir, sep
from os.path import abspath, basename, isdir
def tree(dir, padding, print_files=False, isLast=False, isFirst=False):
if os.path.isfile('tree.txt'):
Logfile = open('tree.txt', 'a')
else:
Logfile = open('tree.txt', 'w')
if basename(dir) in ['.git', 'Julianne', '.ipynb_checkpoints']:
return
if isFirst:
line = padding.decode('utf8')[:-1].encode('utf8') + basename(dir)
#print padding.decode('utf8')[:-1].encode('utf8') + basename(dir)
Logfile.write(line + '\n')
Logfile.flush()
else:
if isLast:
line = padding.decode('utf8')[:-1].encode('utf8') + '└── ' + basename(abspath(dir))
#print line
Logfile.write(line + '\n')
Logfile.flush()
else:
line = padding.decode('utf8')[:-1].encode('utf8') + '├── ' + basename(abspath(dir))
#print line
Logfile.write(line + '\n')
Logfile.flush()
Logfile.flush()
files = []
if print_files:
files = listdir(dir)
else:
files = [x for x in listdir(dir) if isdir(dir + sep + x)]
Logfile.flush()
if not isFirst:
padding = padding + ' '
Logfile.flush()
files = sorted(files, key=lambda s: s.lower())
count = 0
last = len(files) - 1
for i, file in enumerate(files):
count += 1
path = dir + sep + file
isLast = i == last
Logfile.flush()
if isdir(path):
Logfile.flush()
if count == len(files):
if isFirst:
tree(path, padding, print_files, isLast, False)
else:
tree(path, padding + ' ', print_files, isLast, False)
else:
tree(path, padding + '│', print_files, isLast, False)
else:
Logfile.flush()
if isLast:
line = padding + '└── ' + file
#print line
Logfile.write(line + '\n')
Logfile.flush()
else:
line = padding + '├── ' + file
#print line
Logfile.write(line + '\n')
Logfile.flush()
Logfile.flush()
Logfile.flush()
In [9]:
topdir = os.path.sep.join(os.path.abspath(os.path.curdir).split(os.path.sep)[:-1])
target_dir = os.path.join(topdir, 'data', 'catalogs')
In [10]:
Log = open('tree.txt', 'wb')
tree(target_dir, '', True, False, True)