"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo usar Python para buscar archivos de manera eficiente en varios directorios?

¿Cómo puedo usar Python para buscar archivos de manera eficiente en varios directorios?

Publicado el 2024-11-08
Navegar:294

How can I use Python to efficiently search for files across multiple directories?

Buscar un archivo en Python

Buscar archivos en Python puede ser un desafío cuando la ubicación del archivo varía entre diferentes sistemas. Afortunadamente, Python proporciona el módulo os.walk que le permite recorrer directorios y localizar archivos sin esfuerzo.

os.walk para búsqueda de archivos

os.walk crea un generador objeto que itera sobre un directorio y sus subdirectorios, produciendo tres tuplas para cada iteración:

  • root (str): ruta absoluta al directorio actual
  • dirs (lista): lista de subdirectorios dentro del directorio actual
  • archivos (lista): Lista de archivos dentro del directorio actual

Encontrar un solo archivo

Para buscar la primera aparición de un archivo específico, simplemente itere sobre las tuplas obtenidas y verifique si el nombre del archivo está en la lista de archivos:

import os

def find(name, path):
    for root, dirs, files in os.walk(path):
        if name in files:
            return os.path.join(root, name)

Encontrar todas las apariciones de un archivo

Para encontrar todas las apariciones de un archivo, cree una lista para almacenar las coincidencias :

def find_all(name, path):
    result = []
    for root, dirs, files in os.walk(path):
        if name in files:
            result.append(os.path.join(root, name))
    return result

Patrones de archivos coincidentes

Para buscar archivos que coincidan con un patrón, use el módulo fnmatch:

import os, fnmatch
def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch.fnmatch(name, pattern):
                result.append(os.path.join(root, name))
    return result

find('*.txt', '/path/to/dir')
Último tutorial Más>

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