Archivos. Búsqueda en profundidad
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ó fue 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 emplearla 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 que contiene un directorio principal,
#incluyendo los que tiene dentro de sus subdirectorios.
import os
#Directorio principal
directorio = input('Escriba o copie la ruta del directorio a analizar: ')
#Implementación de la función os.walk()
archivos = []
list_archiv = []
i = 0
for carpeta,subcarpeta, archivo in os.walk(directorio):
archivos.append(archivo)
#Número de grupos de archivos en función de la estructura del directorio principal
n_archiv = len(archivos)
print (f'Número de grupos de archivos {str(n_archiv)}')
#Trasnformamos los agrupamientos en una lista única de documentos
for i in range(n_archiv):
for ar in archivos[i]:
list_archiv.append(ar)
# Número total de documentos de la lista anterior
n_ar = len(list_archiv)
print(f'Total archivos {str(n_ar)}')
# Lista de los archivos identificados
print(f'Listado íntegro de los archivos del directorio {directorio}\n')
for a in list_archiv:
print(a)
Se trata de uno de los posibles desarrollos 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 proporciones la ruta absoluta del directorio mediante la función dentro de un bucle for carpeta,subcarpeta, archivo in os.walk(directorio): que pasa los archivos identificados a una lista archivos.append(archivo) pero también gracias al bucle anidado que permite acceder primero a cada una de las agrupaciones de archivos que devuelve 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 mostramos como resultado de la función.
Sobre el directorio con el que yo he probado el script obtengo:
- Primero el número de bloques de archivos: "Número de grupos de archivos 2"; el primero corresponde al 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 iterablefor a in list_archiv:que se generólist_archiv.append(ar)mediante el bucle interior que usamos para acceder a los archivos.
Desarrollo_AreaMG.ods
Desarrollo_AreaMotricidad.ods
Desarrollo_AreasMF.ods
Desarrollo_AreasTotal.ods
Desarrollo_Precocidad.ods
Desarrollo_Promedio.ods
Desarrollo_Resultados.ods
Desarrollo_Resumen.ods
Desarrollo_Retraso.ods
Desarrollo_Validez.ods
Desarrollo_ValoresTotales.od
No hay comentarios:
Publicar un comentario
Comenta esta entrada