Me lo contaron y lo olvidé, lo leí y lo entendí, lo hice y lo aprendí.





lunes, 12 de marzo de 2012

Enlistar carpetas de un directorio en python


Hola camaradas en la programación.
Hubo una ocasión en mi (corta) vida de programador en python que quise saber cuáles eran las carpetas que se encontraban contenidas en una carpeta en específico. Por desgracia el internet no me dio ninguna respuesta específica, solo me aparecieron 2 módulos (por separado) con los cuales se manipulaba tanto archivos como carpetas; más ambos juntos me pudieron servir para hacer una minifunción que me devolviera una lista con las subcarpetas en una carpeta "raiz". La cosa es muy sencilla:

Primero necesitamos el módulo "glob" que contiene una función ("tambien llamada glob") con la cual podremos obtener todas las direcciones absolutas y completas de todos los archivos y carpetas que cumplan con una gramática.

Luego necesitamos el módulo "os" para discriminar a solo los directorios que obtuvimos mediante "glob".
La función queda así:

import os
import glob
def getDirectorios(raiz):
    directorios = glob.glob(str(raiz)+"\\*")
    for direccion in directorios:
        if not os.path.isdir(direccion):
            directorios.remove(direccion)
    return directorios

La cosa está así:
-La función recibe como parámetro raiz que debe ser una cadena, no serlo la misma función la testea como tal, la cual es la carpeta raiz de la cual obtendremos las subcarpetas.
-la función glob (que se encuentra dentro del modulo también llamado glob) buscará y arrojará todas las direcciones inmediatas dentro de la carpeta raiz; la cadena "\\*" indica que se extraerá todos los nombres encontrados, pero también se puede utilizar para discriminar archivos por extensión (como *.mp3 para obtener todos los archivos .mp3).
-Como en la variable directorios se depositan todas las direcciones incluidos los arhivos, testeo todos los valores depositados en esa lista mediante el for y con al función path.isdir (del módulo os) pregunto si no es un directorio, o sea una carpeta, de no serlo lo elimino de la lista.
-Al final regreso la lista resultante.

Bien, eso es todo, una simple función pero que llega a ser de mucha ayuda.

A picar código pythoniano se ha dicho

No hay comentarios:

Publicar un comentario