En Python, solo quiero enumerar todos los archivos en el directorio actual SOLAMENTE. No quiero que se enumeren archivos de ningún subdirectorio o padre.
Parece que existen soluciones similares, pero no parecen funcionar para mí. Aquí está mi fragmento de código:
import os
for subdir, dirs, files in os.walk('./'):
for file in files:
do some stuff
print file
Supongamos que tengo 2 archivos, holygrail.py y Tim dentro de mi directorio actual. También tengo una carpeta y contiene dos archivos, llamémoslos Arthur y Lancelot, dentro de ella. Cuando ejecuto el script, esto es lo que obtengo:
holygrail.py
Tim
Arthur
Lancelot
Estoy feliz con holygrail.py y Tim. Pero los dos archivos, Arthur y Lancelot, no los quiero en la lista.
[os.path.join(path_base,f) for f in os.listdir(path_base) if os.path.isfile(os.path.join(path_base,f))]
files = [f for f in os.listdir("/somedir") if os.path.isfile(os.path.join("/somedir", f))]'
Puedes usar
os.listdir
para este propósito. Si solo desea archivos y no directorios , puede filtrar los resultados usandoos.path.isfile
.ejemplo:
o
fuente
fuente
Puedes usar
os.scandir()
. La nueva función en stdlib comienza desde Python 3.5.Más rápido que
os.listdir()
.os.walk()
implementosos.scandir()
.fuente
Esto se puede hacer con os.walk ()
Python 3.5.2 probado;
elimine la línea dirs.clear () y los archivos en las subcarpetas se incluirán nuevamente.
actualizar con referencias ;
os.walk documentado aquí y habla sobre la triple lista que se está creando y los efectos de arriba hacia abajo.
.clear () documentado aquí para vaciar una lista
entonces, al borrar la lista relevante de os.walk, puede afectar el resultado a sus necesidades.
fuente
Puedes mejorar este código con el
del dirs[:]
que será como seguir.O incluso mejor si pudiera apuntar os.walk con el directorio de trabajo actual.
fuente
en lugar de
os.walk
, solo usaos.listdir
fuente
Puedes usar el módulo pathlib.
fuente