recorrer - Buscar archivos y subcarpetas en Python
python directorio actual (5)
En python 3 puedes usar os.scandir ():
for i in os.scandir(path): if i.is_file(): print(''File: '' + i.path) elif i.is_dir(): print(''Folder: '' i.path)
Me gustaría navegar por la carpeta actual y todas sus subcarpetas y obtener todos los archivos con las extensiones .htm | .html. Descubrí que es posible determinar si un objeto es un directorio o un archivo como este:
import os
dirList = os.listdir("./") # current directory
for dir in dirList:
if os.path.isdir(dir) == True:
# I don''t know how to get into this dir and do the same thing here
else:
# I got file and i can regexp if it is .htm|html
y al final, me gustaría tener todos los archivos y sus rutas en una matriz. ¿Es posible algo así?
Puede usar os.walk()
para iterar recursivamente a través de un directorio y todos sus subdirectorios:
for root, dirs, files in os.walk(path):
for name in files:
if name.endswith((".html", ".htm")):
# whatever
Para crear una lista de estos nombres, puede usar una lista de comprensión:
htmlfiles = [os.path.join(root, name)
for root, dirs, files in os.walk(path)
for name in files
if name.endswith((".html", ".htm"))]
Tenía algo similar en lo que trabajar, y así es como lo hice.
import os
rootdir = os.getcwd()
for subdir, dirs, files in os.walk(rootdir):
for file in files:
#print os.path.join(subdir, file)
filepath = subdir + os.sep + file
if filepath.endswith(".html"):
print (filepath)
Espero que esto ayude.
Use newDirName = os.path.abspath(dir)
para crear un nombre de ruta de directorio completo para el subdirectorio y luego liste su contenido como lo ha hecho con el padre (es decir, newDirList = os.listDir(newDirName)
)
Puede crear un método separado de su fragmento de código y llamarlo recursivamente a través de la estructura del subdirectorio. El primer parámetro es el nombre de ruta del directorio. Esto cambiará para cada subdirectorio.
Esta respuesta se basa en la documentación de la versión 3.1.1 de la Biblioteca de Python. Hay un buen ejemplo de este modelo en acción en la página 228 de la Referencia de la Biblioteca de Python 3.1.1 (Capítulo 10 - Acceso a archivos y directorios). ¡Buena suerte!
Versión ligeramente alterada de la solución de Sven Marnach.
folder_location = ''C:/SomeFolderName''
file_list = create_file_list(folder_location) def create_file_list(path):
return_list = []
import os