Búsqueda recursiva de subcarpetas y recuperación de archivos
En el ámbito de la programación, recorrer directorios y recuperar archivos puede ser una tarea común. Un enfoque eficaz es emplear un algoritmo recursivo para buscar en subcarpetas y acumular una lista de archivos que cumplan criterios específicos.
Problema encontrado
Un usuario encontró un obstáculo al intentar crear una lista de archivos específicos en una búsqueda recursiva de subcarpetas. El problema surgió porque la variable subcarpeta extraía una lista de subcarpetas en lugar de la carpeta actual que contiene el archivo.
Propósito de la subcarpeta
La variable subcarpeta está destinada a contener el nombre de la subcarpeta bajo la carpeta principal donde se encuentra el archivo deseado.
Resolución
La clave para resolver este problema radica en aprovechar la "raíz" o variable "dirpath" en lugar de "subCarpeta". Esta variable contiene la ruta absoluta al directorio actual que se recorre durante la recursividad. Al incorporar esta ruta en la construcción de fileNamePath, se puede lograr la precisión deseada.
import os
result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']
Mejora del módulo global
Un enfoque alternativo y eficiente implica utilizar el módulo global integrado de Python. Glob se destaca en la selección de archivos según sus extensiones.
import os
from glob import glob
result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]
Función generadora
Para una implementación concisa y eficiente, también se puede emplear una función generadora.
from itertools import chain
result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))
Python 3.4 Solución
Si está trabajando con Python 3.4 o posterior, puede aprovechar la función rglob() del módulo pathlib.
from pathlib import Path
result = list(Path(".").rglob("*.[tT][xX][tT]"))
Estos enfoques proporcionan soluciones efectivas para buscar subcarpetas de forma recursiva y compilar una lista de archivos que cumplen con los criterios deseados, lo que facilita las tareas de recuperación de archivos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3