¿Cómo puedo enumerar el contenido de un directorio en Python?

2 minutos de lectura

avatar de usuario
Pablo D. Waite

No puede ser difícil, pero tengo un bloqueo mental.

import os
os.listdir("path") # returns list

  • y no pasar argumentos enumerará los contenidos de CWD: os.listdir() = os.listdir('.')

    – Geremia

    12/09/2021 a las 23:00


avatar de usuario
trey hunner

De una sola mano:

import os
os.listdir("/home/username/www/")

De otra manera:

glob.glob("/home/username/www/*")

Ejemplos encontrados aquí.

los glob.glob El método anterior no enumerará los archivos ocultos.

Dado que originalmente respondí esta pregunta hace años, rutalib se ha agregado a Python. Mi forma preferida de enumerar un directorio ahora generalmente implica el iterdir método en Path objetos:

from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")

  • ¿Glob.glob enumeraría archivos ocultos (supongo que te refieres a .XYZ archivos en un contexto de sistema de archivos Unix), cuando se usa con glob.glob("/home/username/www/.*") ?

    –Andy Finkenstadt

    3 de agosto de 2012 a las 17:48


  • Sí, me refiero a los archivos que comienzan con un punto. El ejemplo que dio funcionaría para hacer coincidir archivos ocultos (y solo archivos ocultos).

    – Trey Hunner

    04/08/2012 a las 19:10

  • Acabo de importar glob y usé glob.glob(r’c:\users’) pero solo regresó ['c:\\users']

    – Musixauce3000

    14/04/2016 a las 19:43

  • @Musixauce3000: Querrás hacer glob.glob(r'c:\users\*') (Glob en realidad no enumera directorios, pero expande asteriscos y demás, lo que realiza una tarea similar).

    – Trey Hunner

    15 de abril de 2016 a las 7:04

avatar de usuario
marca tolonen

os.walk se puede usar si necesita recursividad:

import os
start_path="." # current directory
for path,dirs,files in os.walk(start_path):
    for filename in files:
        print os.path.join(path,filename)

avatar de usuario
Tuomas Pelkonen

glob.glob o os.listdir lo haré.

avatar de usuario
zdav

los os módulo maneja todas esas cosas.

os.listdir(path)

Devuelve una lista que contiene los nombres de las entradas en el directorio dado por la ruta. La lista está en orden arbitrario. No incluye las entradas especiales ‘.’ y ‘..’ incluso si están presentes en el directorio.

Disponibilidad: Unix, Windows.

avatar de usuario
jpyams

En Python 3.4+, puede usar el nuevo pathlib paquete:

from pathlib import Path
for path in Path('.').iterdir():
    print(path)

Path.iterdir() devuelve un iterador, que se puede convertir fácilmente en un list:

contents = list(Path('.').iterdir())

avatar de usuario
Jean-François Fabre

Desde Python 3.5, puedes usar os.scandir.

La diferencia es que devuelve archivo entradas no nombres. En algunos sistemas operativos como Windows, significa que no tiene que os.path.isdir/file saber si es un archivo o no, y eso ahorra tiempo de CPU porque stat ya está hecho al escanear el directorio en Windows:

ejemplo para enumerar un directorio e imprimir archivos más grandes que max_value bytes:

for dentry in os.scandir("/path/to/dir"):
    if dentry.stat().st_size > max_value:
       print("{} is biiiig".format(dentry.name))

(lea una extensa respuesta mía basada en el rendimiento aquí)

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad