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, apathlibtrata 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()eis_dir(): O métodoexists()retornaTruetanto para arquivos quanto para pastas. Para evitar tentar abrir um diretório como se fosse um arquivo de texto, prefira usaris_file()ouis_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 blocotry...except FileNotFoundError. - Sem Dependências Externas: Ambos os módulos (
pathlibeos) pertencem à biblioteca padrão do Python, funcionando nativamente em qualquer instalação sem necessidade depip install.

Comentários
Postar um comentário