Como Verificar se Um Arquivo ou Pasta Existe em Python

Como Verificar se Um Arquivo ou Pasta Existe em Python

Antes de tentar ler ou manipular arquivos e diretórios no Python, é fundamental validar se o caminho informado realmente existe para evitar exceções do tipo FileNotFoundError. Utilizando a biblioteca nativa pathlib (recomendada para versões modernas do Python) ou o módulo legado os.path, é possível realizar essa verificação de forma simples, legível e segura.

Python
from pathlib import Path
import os

# -----------------------------------------------------------------------------
# 1. Abordagem Moderna: Módulo pathlib (Recomendado)
# -----------------------------------------------------------------------------
caminho_arquivo = Path("dados/relatorio.csv")
caminho_pasta = Path("dados")

# Verifica existência geral (arquivo ou diretório)
if caminho_arquivo.exists():
    print(f"O caminho '{caminho_arquivo}' existe!")

# Verifica especificamente se é um arquivo
if caminho_arquivo.is_file():
    print(f"'{caminho_arquivo}' é um arquivo válido.")

# Verifica especificamente se é um diretório
if caminho_pasta.is_dir():
    print(f"'{caminho_pasta}' é um diretório válido.")


# -----------------------------------------------------------------------------
# 2. Abordagem Tradicional: Módulo os.path
# -----------------------------------------------------------------------------
caminho_antigo = "dados/relatorio.csv"

# Checagem genérica com os.path.exists
if os.path.exists(caminho_antigo):
    print(f"[os.path] O caminho '{caminho_antigo}' existe.")

# Checagens específicas de arquivo e pasta
existe_arquivo = os.path.isfile(caminho_antigo)
existe_pasta = os.path.isdir("dados")

print(f"É arquivo? {existe_arquivo} | É pasta? {existe_pasta}")
  • Vantagem da pathlib: Introduzida no Python 3.4, a pathlib trata caminhos como objetos orientados a objetos, tornando o código mais intuitivo e lidando automaticamente com barras de separação (/ ou \) entre Windows e Linux/macOS.

  • Diferença entre exists(), is_file() e is_dir(): O método exists() retorna True tanto para arquivos quanto para pastas. Para evitar tentar abrir um diretório como se fosse um arquivo de texto, prefira usar is_file() ou is_dir().

  • Tratamento de Race Conditions (Condição de Corrida): Em sistemas concorrentes, o arquivo pode ser excluído entre a checagem do exists() e a abertura do arquivo (open()). Para cenários críticos, a melhor prática é usar o bloco try...except FileNotFoundError.

  • Sem Dependências Externas: Ambos os módulos (pathlib e os) pertencem à biblioteca padrão do Python, funcionando nativamente em qualquer instalação sem necessidade de pip install.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server