"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso usar o Python para pesquisar arquivos com eficiência em vários diretórios?

Como posso usar o Python para pesquisar arquivos com eficiência em vários diretórios?

Publicado em 2024-11-08
Navegar:300

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

Encontrar um arquivo em Python

Encontrar arquivos em Python pode ser um desafio quando a localização do arquivo varia em diferentes sistemas. Felizmente, Python fornece o módulo os.walk que permite percorrer diretórios e localizar arquivos sem esforço.

os.walk para pesquisa de arquivos

os.walk cria um gerador objeto que itera sobre um diretório e seus subdiretórios, produzindo três tuplas para cada iteração:

  • root (str): Caminho absoluto para o diretório atual
  • dirs (list): Lista de subdiretórios dentro do diretório atual
  • arquivos (lista): Lista de arquivos dentro do diretório atual

Encontrando um único arquivo

Para encontrar a primeira ocorrência de um arquivo específico, simplesmente itere sobre as tuplas geradas e verifique se o nome do arquivo está na lista de arquivos:

import os

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

Encontrando todas as ocorrências de um arquivo

Para encontrar todas as ocorrências de um arquivo, crie uma lista para armazenar as correspondências :

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

Matching File Patterns

Para pesquisar arquivos que correspondam a um padrão, use o 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')
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3