No puede ser difícil, pero estoy teniendo un bloqueo mental.
No puede ser difícil, pero estoy teniendo un bloqueo mental.
Respuestas:
import os
os.listdir("path") # returns list
De una sola mano:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
El glob.glob
método anterior no enumerará los archivos ocultos.
Desde que originalmente respondí esta pregunta hace años, pathlib se ha agregado a Python. Mi forma preferida de listar un directorio ahora generalmente implica el iterdir
método en Path
objetos:
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
['c:\\users']
glob.glob(r'c:\users\*')
(globalmente, en realidad no enumera los directorios, pero expande los asteriscos y demás, lo que lleva a cabo una tarea similar).
os.walk
se puede usar si necesita recurrencia:
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)
glob.glob
o os.listdir
lo haremos.
import glob
ENTER glob.glob(r'c:\users')
ENTER solo parece regresar ['c:\\users']
. ¿Porqué es eso? Me gustaría usar glob.glob porque, como han señalado otros usuarios, supuestamente devuelve el contenido de un directorio e ignora también los archivos ocultos. Esto es importante.
glob
:glob.glob(r'c:\users\*')
El 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 ruta. La lista está en orden arbitrario. No incluye las entradas especiales '.' y '...' incluso si están presentes en el directorio.
Disponibilidad: Unix, Windows.
Desde Python 3.5, puedes usar os.scandir
.
La diferencia es que devuelve entradas de archivo , 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 listar 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í )
El siguiente código enumerará los directorios y los archivos dentro del directorio. El otro es os.walk
def print_directory_contents(sPath):
import os
for sChild in os.listdir(sPath):
sChildPath = os.path.join(sPath,sChild)
if os.path.isdir(sChildPath):
print_directory_contents(sChildPath)
else:
print(sChildPath)
.XYZ
archivos en un contexto de sistema de archivos Unix), cuando se usa conglob.glob("/home/username/www/.*")
?