← Volver
La función estándar
Este código genera un árbol a partir del directorio de instalación de Python (para indicar el directorio actual, utilícese
Los primeros resultados en pantalla son más o menos los siguientes.
Como puede observarse, la primera ruta en analizarse es siempre el argumento indicado (
La función es especialmente útil para buscar archivos y/o carpetas en el sistema o en alguna ruta en particular. Por ejemplo, el siguiente código imprime la dirección de todos los archivos que contienen la palabra "python" dentro de
Cómo recorrer un árbol de archivos y carpetas
os.walk()
genera un árbol de archivos y carpetas a partir de una ruta inicial para ser recorrido como un objeto iterable. De este modo, os.walk("C:/")
, por ejemplo, en Windows, permite recorrer todos los archivos y carpetas del sistema (considerando que C:
es la única unidad).import os
for dirpath, dirnames, filenames in os.walk("C:/Python35"):
print("Ruta actual:", dirpath)
print("Carpetas:", ", ".join(dirnames))
print("Archivos:", ", ".join(filenames))
Este código genera un árbol a partir del directorio de instalación de Python (para indicar el directorio actual, utilícese
os.walk(".")
). El valor retornado es un objeto iterable cuyos elementos son tuplas, y éstas, a su vez, contienen otros tres elementos: la ruta del directorio actual que se está recorriendo (dirpath
), una lista con los nombres de las carpetas (dirnames
) y otra con los nombres de los archivos (filenames
).Los primeros resultados en pantalla son más o menos los siguientes.
Ruta actual: C:/Python35
Carpetas: DLLs, Doc, gevent, include, Lib, libs, Release, Scripts, share, tcl, Tools
Archivos: LICENSE.txt, NEWS.txt, python.exe, python3.dll, python35.dll, pythonw.exe, pywin32-wininst.log, README.txt, vcruntime140.dll
Ruta actual: C:/Python35\DLLs
Carpetas:
Archivos: py.ico, pyc.ico, pyexpat.pyd, select.pyd, sqlite3.dll, tcl86t.dll, tk86t.dll, unicodedata.pyd, winsound.pyd, _bz2.pyd, _ctypes.pyd, _ctypes_test.pyd, _decimal.pyd, _elementtree.pyd, _hashlib.pyd, _lzma.pyd, _msi.pyd, _multiprocessing.pyd, _overlapped.pyd, _socket.pyd, _sqlite3.pyd, _ssl.pyd, _testbuffer.pyd, _testcapi.pyd, _testimportmultiple.pyd, _testmultiphase.pyd, _tkinter.pyd
Ruta actual: C:/Python35\Doc
Carpetas:
Archivos: python351.chm
[...]
Como puede observarse, la primera ruta en analizarse es siempre el argumento indicado (
C:/Python35/
en nuestro caso), pues es el punto de partida. Luego, se prosigue con la primera carpeta encontrada dentro de ésta, a saber, DLLs
. Como dentro de ella no hay más directorios, entonces se prosigue con la segunda de la ruta anterior, Doc
. Este proceso se repite hasta que se haya generado todos los elementos.La función es especialmente útil para buscar archivos y/o carpetas en el sistema o en alguna ruta en particular. Por ejemplo, el siguiente código imprime la dirección de todos los archivos que contienen la palabra "python" dentro de
C:/Python35/
(y todas sus subcarpetas).import os
import os.path
for dirpath, dirnames, filenames in os.walk("C:/Python35/"):
for filename in filenames:
if "python" in filename.lower():
print(os.path.join(dirpath, filename))
👨💻 ¡Ya lanzamos el curso oficial de Recursos Python en Udemy! Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.
🐍 También te puede interesar:
💡 Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.