Fases del análisis de datos
Acceso a datos (IV)
Siguiendo con esta temática, hemos visto [en la entrada anterior] como se podría concretar un procedimiento de acceso al contenido de un directorio y a sus subdirectorios con una finalidad concreta: identificar los documentos que contienen e identificar de que tipo son, en función de su extensión. Una de las cuestiones que mayor dificultad presentó en ese momento fue la de listar y cuantificar los documentos con independencia de la estructura del directorio. Ofrezco en esta un intento de solución partiendo de lo que sabemos sobre como [acceder a él].
Esta solución al problema ni es la única ni la mejor, pero sí suficientemente sencilla como para poder ser empleada incluso como herramienta o función; al menos así la he formulado, incluyendo la entrada interactiva de la dirección o ruta absoluta del directorio sobre el que deseemos trabajar. Primero te presento el script y después lo comento.
'''Acceso a los archivos (documentos) que contiene un directorio, incluyendo los que se encuentran dentro de sus subdirectorios.'''import os#Directorio principal sobre el que trabajardirectorio = input('Escriba o copie la ruta del directorio a analizar: ')'''Ejemplo de ruta (puedes usar la que desees): D:/ESTUDIOS/Estudio_Desarrollo'''#Implementación de la función os.walk()archivos = []list_archiv = []i = 0for carpeta,subcarpeta, archivo in os.walk(directorio):archivos.append(archivo)#Número de grupos de archivos en función de la estructura del directorio principaln_archiv = len(archivos)print (f'Número de grupos de archivos {str(n_archiv)}')#Trasnformamos los agrupamientos en una lista única de documentosfor i in range(n_archiv):for ar in archivos[i]:list_archiv.append(ar)# Número total de documentos de la lista anteriorn_ar = len(list_archiv)print(f'Total archivos {str(n_ar)}')# Lista de los archivos identificadosprint(f'Listado íntegro de los archivos del directorio {directorio}\n')for a in list_archiv:print(a)
Y digo que lo comento (muy brevemente) porque la explicación es innecesaria, dados los comentarios que acompañan al código. Me limitaré a decir que se trata de uno de los posibles desarrollo del procedimiento de acceso al contenido de un directorio basado en la función os.walk() que aquí se ofrece como herramienta interactiva: es necesario que le proporciones al script la dirección (absoluta) de ese directorio del que quieres saber cuántos documentos contiene y cuáles son.
Esto es posible mediante el uso de esa función dentro de un bucle for que nos permite recorrer la estructura del directorio (for carpeta,subcarpeta, archivo in os.walk(directorio):) y que pasa los archivos identificados a una lista (archivos.append(archivo)), pero también gracias al doble bucle (anidado) que nos permite acceder primero a cada una de las agrupaciones de archivos que devuelve el uso de la función (for i in range(n_archiv):) y después a su contenido (for ar in archivos[i]:) para entregarlos a una segunda lista (list_archiv.append(ar)), que es la que después mostramos como resultado final de nuestra "función".
Sobre el directorio con el que yo he probado el script, lo que obtengo es lo siguiente:
- Primero el número de bloques de archivos (2) (Número de grupos de archivos 2); el primero corresponde al propio directorio principal (D:/ESTUDIOS/Estudio_Desarrollo), que contiene un subdirectorio y una serie de documentos (5 hojas de cálculo), y el segundo al citado subdirectorio (AnalisisTotal).
- Segundo el número de documentos totales, esto es, los 5 ubicados en el directorio principal y los 7 que contiene el subdirectorio (Total archivos 12)
- Finalmente se muestran todos los archivos (12) en forma de lista, dado que fueron solicitados (print(a)) dentro de un bucle que recorre el iterable (for a in list_archiv:) que se generó (list_archiv.append(ar)) mediante el bucle interior (anidado) que usamos para acceder a los archivos.
Desarrollo_AreaLenguaje.odsDesarrollo_AreaMG.odsDesarrollo_AreaMotricidad.odsDesarrollo_AreasMF.odsDesarrollo_AreasTotal.odsDesarrollo_Precocidad.odsDesarrollo_Promedio.odsDesarrollo_Resultados.odsDesarrollo_Resumen.odsDesarrollo_Retraso.odsDesarrollo_Validez.odsDesarrollo_ValoresTotales.ods
A partir de aquí puedes pensar en diferentes formas de manejar la información obtenida. Puedes, por ejemplo, desarrollar procedimientos para almacenar esta la información; pero también puedes mejorar el script en su fase inicial, automatizando el acceso a una colección de directorios que deseas analizar. Las posibilidades son muchas.


No hay comentarios:
Publicar un comentario
Comenta esta entrada