Python: ¿cómo listar todos los archivos y carpetas de una carpeta a partir de una ruta?

publicado por: Anonymous

Esta pregunta se parece a esta otra, sin embargo es algo diferente y por ello creo que merece una respuesta aparte. Él código del que parto es el siguiente (lo he sacado de la pregunta mencionada):

from os import walk, getcwd

def ls(ruta = getcwd()):
     listaarchivos = []
     for (_, _, archivos) in walk(ruta):
          listaarchivos.extend(archivos)
     return listaarchivos

print(ls(ruta = getcwd()))

Me gustaría modificar dos cosas:

  • Me gustaría que en vez de ser la ruta actual del directorio de trabajo fuera una ruta cualquiera que yo le diera, por ejemplo: C:. Si le diera esa ruta esperaría que me imprimiera una lista de todos los ficheros y carpetas de mi disco duro.
  • Me gustaría que también incluyera el nombre de las carpetas que están dentro de la ruta del directorio dado así como las carpetas que se encuentran dentro de las carpetas.

En la mencionada pregunta, el último código del punto 4 parece hacer lo que digo:

from os import walk, getcwd

def ls(ruta = getcwd()):
    listaarchivos = []
    for (_, _, archivos) in walk(ruta):
        listaarchivos.extend(archivos)
return listaarchivos

Sin embargo esto solo responde parcialmente a mi pregunta porque además necesito que aparezcan los nombres de las carpetas que están dentro de la ruta dada.

¿Cómo podría modificar el código dado para que hiciera lo que quiero?
Muchas gracias por vuestra atención.

solución

Puedes modificar la función que usa Mariano en su respuesta para que simplemente añada los subdirectorios también:

from os import walk, getcwd


def ls(ruta = getcwd()):
    lista = []
    for _, subdirs, archivos in walk(ruta):
        lista.extend(subdirs+archivos)
    return lista

En cuanto a la ruta solo tienes que tener en cuenta que Python usa / propia de los sistemas Linux y no la barra inversa que usa Windows:

Por ejemplo para una carpeta en windows con la ruta:

C:ProgramacionPythonTkinter

En Python Debes cambiar todas las barras inversas por barras inclinadas (operador de división):

C:/Programacion/Python/Tkinter
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *