Tecnología · GUÍA PRÁCTICA
¿Pathlib sigue encontrando archivos ocultos? Poda el recorrido, no filtres el resultado
El filtro actúa después de que Python ya entró en el directorio. Define la política de ocultos, poda en modo top-down y verifica el árbol que nunca se visitó.

Pathlib no trata el punto inicial como exclusión universal: su glob puede coincidir con nombres de punto, mientras glob.glob tiene include_hidden. Descartar un resultado de rglob después no impide que Python entre en el directorio y enumere sus descendientes.
Define primero si oculto significa prefijo de punto POSIX, atributo hidden de Windows, caché de aplicación o una combinación. Después poda dirnames antes de entrar, filtra archivos por separado y guarda un registro de visitados, omitidos, enlaces y errores.
Escribe primero el contrato de ocultos
Registra raíz, plataforma, versión de Python y objetivo. Define por separado punto, atributo Windows y exclusiones como build o vendor.
No llames multiplataforma a una prueba de un carácter si no consulta el metadato de cada sistema.
Poda directorios antes de entrar
En Python 3.12+ usa root.walk(top_down=True) y conserva en dirnames[:] solo hijos permitidos. El walker no entra en los eliminados.
En versiones anteriores usa os.walk(topdown=True). Debes modificar la lista in-place, no reasignar una variable local.
Separa filtros de archivo y diferencias de glob
Tras podar directorios, aplica la política a archivos para excluir hojas como .DS_Store. Filtrar archivos no es podar subárboles.
Si usas glob.glob, registra include_hidden. Compartir * y ** no implica el mismo valor predeterminado; ** también puede ser costoso.
Decide atributos de Windows y symlinks
En Windows consulta FILE_ATTRIBUTE_HIDDEN con una API soportada para directorios y archivos. La convención del punto es una señal distinta.
No sigas symlinks de directorio por defecto. Si debes hacerlo, registra identidad estable y rechaza repeticiones para evitar ciclos.
Cierra con un manifiesto de aceptación
on_error debe registrar ruta, operación y excepción. Decide si un permiso denegado falla, marca incompleto o permite omitir; nunca lo borres en silencio.
El manifiesto incluye raíz, versión de política, recuentos visitados y producidos, raíces omitidas, política de enlaces y errores. Prueba con un fixture pequeño.
