This script is an alternative to popular package tree
Python2.7
# -*- coding: utf-8 -*-
import os
# Secuencia de escape ANSI para el color azul
BLUE = '\033[94m'
RESET = '\033[0m'
def list_directory(path, indent='', output_file=None):
try:
items = os.listdir(path)
except OSError as e:
print(e)
return
files = []
directories = []
# Separar archivos y directorios
for item in items:
full_path = os.path.join(path, item)
if os.path.isdir(full_path):
directories.append(item)
else:
files.append(item)
# Mostrar directorios primero
for directory in sorted(directories):
line = indent + '|-- ' + BLUE + directory + RESET
print(line)
if output_file:
# Guardar en el archivo sin color
output_file.write(indent + '|-- ' + directory + '\n')
list_directory(os.path.join(path, directory), indent + '| ', output_file)
# Mostrar archivos
for file in sorted(files):
line = indent + '|-- ' + file
print(line)
if output_file:
output_file.write(line + '\n')
if __name__ == '__main__':
path = raw_input("Ingrese el path del directorio: ")
output_path = raw_input("Ingrese el path donde desea guardar el resultado (incluya el nombre del archivo): ")
if os.path.isdir(path):
print(path)
with open(output_path, 'w') as f:
f.write(path + '\n')
list_directory(path, output_file=f)
print("Resultado guardado en:", output_path)
else:
print("El path especificado no es un directorio vรกlido.")
Python3
# -*- coding: utf-8 -*-
import os
# Secuencia de escape ANSI para el color azul
BLUE = '\033[94m'
RESET = '\033[0m'
def list_directory(path, indent='', output_file=None):
try:
items = os.listdir(path)
except OSError as e:
print(e)
return
files = []
directories = []
# Separar archivos y directorios
for item in items:
full_path = os.path.join(path, item)
if os.path.isdir(full_path):
directories.append(item)
else:
files.append(item)
# Mostrar directorios primero
for directory in sorted(directories):
line = indent + '|-- ' + BLUE + directory + RESET
print(line)
if output_file:
# Guardar en el archivo sin color
output_file.write(indent + '|-- ' + directory + '\n')
list_directory(os.path.join(path, directory), indent + '| ', output_file)
# Mostrar archivos
for file in sorted(files):
line = indent + '|-- ' + file
print(line)
if output_file:
output_file.write(line + '\n')
if __name__ == '__main__':
path = input("Ingrese el path del directorio: ")
output_path = input("Ingrese el path donde desea guardar el resultado (incluya el nombre del archivo): ")
if os.path.isdir(path):
print(path)
with open(output_path, 'w') as f:
f.write(path + '\n')
list_directory(path, output_file=f)
print("Resultado guardado en:", output_path)
else:
print("El path especificado no es un directorio vรกlido.")