Python File Handling

Encontrando Arquivos por Extensão Eficientemente em Python

Spread the love

Encontrar arquivos com extensões específicas é uma tarefa comum ao trabalhar com arquivos em Python. Este artigo explora vários métodos eficientes e versáteis para alcançar isso, atendendo a diferentes necessidades e estilos de codificação. Abordaremos vários módulos e técnicas Python, permitindo que você escolha a abordagem ideal para o seu caso de uso específico.

Sumário

  1. Usando o módulo glob
  2. Aproveitando o módulo os
  3. Empregando pathlib para buscas em um único diretório
  4. Busca recursiva com os.walk
  5. Busca recursiva com pathlib.rglob

1. Usando o módulo glob

O módulo glob oferece uma maneira concisa de localizar arquivos que correspondem a um padrão definido dentro de um único diretório. Sua função glob() retorna uma lista de caminhos que satisfazem o padrão.


import glob

def find_files_with_extension_glob(directory, extension):
  """Encontra arquivos com uma extensão dada usando glob.glob()."""
  return glob.glob(f"{directory}/*{extension}")

# Exemplo:
files = find_files_with_extension_glob("./my_directory", ".txt")
print(files)

2. Aproveitando o módulo os

O módulo os fornece controle mais granular. os.listdir() lista todas as entradas em um diretório, permitindo filtragem personalizada.


import os

def find_files_with_extension_os(directory, extension):
  """Encontra arquivos com uma extensão dada usando os.listdir()."""
  files = []
  for filename in os.listdir(directory):
    if filename.endswith(extension):
      files.append(os.path.join(directory, filename))
  return files

# Exemplo:
files = find_files_with_extension_os("./my_directory", ".txt")
print(files)

3. Empregando pathlib para buscas em um único diretório

O módulo pathlib fornece uma abordagem orientada a objetos. Seu método glob() oferece uma sintaxe mais limpa do que glob.glob().


from pathlib import Path

def find_files_with_extension_pathlib(directory, extension):
  """Encontra arquivos com uma extensão dada usando pathlib.glob()."""
  return list(Path(directory).glob(f"*{extension}"))

# Exemplo:
files = find_files_with_extension_pathlib("./my_directory", ".txt")
print(files)

4. Busca recursiva com os.walk

Para pesquisar subdiretórios, os.walk() percorre a árvore de diretórios, permitindo que você verifique cada arquivo para a extensão desejada.


import os

def find_files_recursive_os(directory, extension):
    """Recursivamente encontra arquivos com uma extensão dada usando os.walk()."""
    files = []
    for root, _, filenames in os.walk(directory):
        for filename in filenames:
            if filename.endswith(extension):
                files.append(os.path.join(root, filename))
    return files

# Exemplo:
files = find_files_recursive_os("./my_directory", ".txt")
print(files)

5. Busca recursiva com pathlib.rglob

O método rglob() do pathlib oferece a solução mais elegante para buscas recursivas.


from pathlib import Path

def find_files_recursive_pathlib(directory, extension):
  """Recursivamente encontra arquivos com uma extensão dada usando pathlib.rglob()."""
  return list(Path(directory).rglob(f"*{extension}"))

# Exemplo:
files = find_files_recursive_pathlib("./my_directory", ".txt")
print(files)

Lembre-se de criar uma pasta “my_directory” com alguns arquivos .txt para que os exemplos funcionem corretamente. Selecione o método que melhor se alinha ao seu estilo de codificação e às demandas do projeto. Para buscas simples em um único diretório, glob ou pathlib.glob() são excelentes opções. Para buscas recursivas, pathlib.rglob() fornece a solução mais concisa e legível.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *