Ya me picaba el gusanillo tras tanto examen y tanta gaita, así que esta vez ha tocado hacer una función que recorra los ficheros del directorio actual y de todos sus subdirectorios. Se basa en una función que mediante las funciones
para saber el tipo de fichero,
para sacar el contenido de un directorio y una cola para guardar los ficheros que quedan por analizar.
Importamos las funciones necesarias de sus respectivos módulos:
from os.path import join
from stat import S_ISDIR,S_ISCHR,S_ISBLK,S_ISREG,S_ISFIFO,S_ISLNK,S_ISSOCK
Todas las
se pueden sacar también de
, según la documentación del módulo stat –donde se puede encontrar una función similar a la implementada, pero con recursividad en vez de usar una cola.
Ahora la función (siento que la identación esté hecha con ___, pero es que el editor de WordPress no está hecho para meter código):
____ficheros=[(None,origen),]
cargar la ruta inicial. El primer elemento de la tupla no sería necesario, no habría por qué usar una tupla. La estoy usando para un uso posterior que le quiero dar a esta función de recorrido de directorios.
mientras queden ficheros
sacamos el siguiente fichero de la lista (ignorad
)
obtenemos mediante
el modo del fichero (lo que incluye los permisos, pero también el tipo). Según de qué tipo sea imprimiremos una cosa u otra en pantalla:
Es un directorio: además de decir que es un directorio…
…debemos leer sus contenidos con
e incluirlos en la lista ficheros. Nótese que
no devuelve ni el directorio
, ni
, lo que nos evita ciclos que harían que el algoritmo no acabara nunca hasta agotar la memoria
y vamos comprobando otros tipos
____ walktree(‘.’)