AlmaEstradaVaz:
ya he solucionado el problema, utilice la funcion .seek() que me lleva en una posición especifica del fichero, así antes de leer el directorio utilizo:
raiz.seek(0);
para que me ubique al principio del mismo y no se salte ningún archivo.
No era la solución que tenía en mente, pero al menos ya me diste una pista de cómo funciona el sistema de archivos FAT32.
Lo que en un sistema de archivos se conoce como "directorio" (carpeta para las interfaces gráficas), en FAT32 se implementa como un "archivo especial" (literalmente lo es, solo que en la tabla de asignación de archivos o "FAT" por las siglas en inglés, lo marcan como directorio). De hecho, subdirectorios de la raíz también se ubican físicamente en la sección de memoria destinada a almacenar el contenido de los archivos como tal.
El contenido de un "archivo directorio" es un conjunto de índices o punteros de la FAT que apuntan (valga la redundancia) a la información de los archivos que contiene ese directorio. Como el sistema de archivos lleva el número 32 en el nombre, sospecho que dichos punteros son de 32 bits (4 bytes). Por eso cuando haces seek(0); le dices al "puntero del archivo" que regrese al primer índice del contenido del directorio.
Una solución muy extraña, pero funciona y esa fue mi explicación del porqué...