una recorrer nombre manejo leer gestion explorador directorio carpetas carpeta archivos archivo actual abrir python subfolder

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.

import os

folder_location = ''C:/SomeFolderName'' file_list = create_file_list(folder_location)

def create_file_list(path): return_list = []

for filenames in os.walk(path): for file_list in filenames: for file_name in file_list: if file_name.endswith((".txt")): return_list.append(file_name) return return_list