La simplicidad es la clave de la verdadera elegancia.
Coco Chane
Aproximadamente en estas fechas pero un año atrás me enfrentaba ante un nuevo reto C#. El artículo puedes verle aquí. Pues tal parece que cada termino de ciclo el destino me tiene preparado nuevos retos y en este caso mi maldita arma sera Python. Sobre este lenguaje mi conocimiento puedo decir que es basicon he hecho uno que otro script pero para esto se necesita algo mas que algo básico. En fin vamos a darle caña a esto.
Antes que anda quiero aclarar que el titulo hello world recursivo es solo para causar curiosidad ya que en realidad el algoritmo que voy a realizar si es Recursivo pero como es el primer fragmento de un proyecto sera como mi hello world.
Bases
Python es un lenguaje de programación interpretado, diseñado por Guido Van Rossumin cuya filosofía hace hincapié en la legibilidad de su código. Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.
La recursividad consiste en funciones que se llaman a sí mismas, evitando el uso de bucles y otros iteradores. En pocas palabra como alguna vez me dijo un profe del TEC de celaya “Rojas”. Es la forma elegante de hacer ciclos muchacho. Por cierto estas reprobado. );
Teniendo en cuenta todo esto vamos a resolver el desgraciado problema.
Problema
Se necesita crear un programa que sea capaz de descargar información de manera automática y hacer un auto-resize. Sobre la descarga el algoritmo debe ser capaz de eliminar una carpeta si uno lo requiere o en caso contrario crear una nueva con algún tipo de identificador
Para esto vamos a ser uso de librerías y algo que me sorprende de Python es lo fácil de obtenerla, El desgraciado si que mola en esta proceso. Y estas son : Pathlib y Shutil
la función consecutiveFolder es la recursiva que usa como parametro de salida la existencia de la carpeta dada esta condición devuelve el nombre de carpeta para que esta pueda estructurar el directorio con el método restructureDirectory . De esta manera podrá dejar el programa ejecutándose y su por extraña razón se topara con un directorio igual este no lo sobre escribe si no que crea uno diferente.
from pathlib import Path from shutil import rmtree class Arca: def restructureDirectory(self,name,override): if override : rmtree(name) return name else : _folder = self.consecutiveFolder(name) Path(_folder).mkdir() return _folder def consecutiveFolder(self,folder,iteration=1) : resource = folder+'_'+ str(iteration) _path = Path(resource) if( not _path.exists() ) : return resource else : index = iteration + 1 return self.consecutiveFolder(folder,iteration=index) #Prueba arca = Arca() arca.restructureDirectory('prueba',False)
Apenas va comenzando este programa pero quería ver como esta el POO en Python. En cuanto esto este un poco mas en forma le dedicare un post.
Referencias
https://docs.python.org/3/library/pathlib.html#pathlib.Path.mkdir
https://docs.python.org/3/library/shutil.html
https://entrenamiento-python-basico.readthedocs.io/es/latest/leccion5/funciones_recursivas.html
Soy Juan Luis García Corrales, mi nombre de guerra es monolinux. Vivo en Villagrán ,Guanajuato. Cofundador de jungla
ISC orgullosamente LINCE. Apasionado del arte , Crítico de las Películas , Musica y Libros , Escribo en tiempo libres y ♥ Regina
Mi estilo de vida es la programación así que trato de sincronizarlo con mi vida diaria, predicó la filosofía Gnu/Linux para brindar opciones menos capitalistas.
– Viviendo en la armonía del caos