csv.DictReader convierte cada registro en un diccionario basado en el encabezado. Es más legible que depender de índices, pero CSV sigue siendo texto: tipos, encoding y reglas de negocio deben quedar explícitos.
import csv
from pathlib import Path
origem = Path("clientes.csv")
with origem.open(encoding="utf-8", newline="") as arquivo:
leitor = csv.DictReader(arquivo)
for linha in leitor:
email = linha["email"].strip().lower()
ativo = linha["ativo"].strip().lower() == "sim"
print(email, ativo)
Abre el archivo con newline="", como indica la API, y declara el encoding. Normaliza solo los campos cuyo contrato lo permite. Una columna ausente no equivale a un valor vacío, así que valida fieldnames antes de procesar lotes grandes.
Buenas prácticas
Al escribir, pasa fieldnames a DictWriter, llama a writeheader() y elige extrasaction de forma consciente. Configura delimitador, comillas y dialecto si el productor no usa el estándar. No confíes ciegamente en Sniffer, porque es heurístico. Si usuarios abrirán el archivo como hoja de cálculo, evalúa valores que empiezan por =, +, - o @.
La guía de archivos TXT, CSV y JSON amplía el contexto. Para rutas portables, aplica pathlib.
La documentación oficial del módulo csv, consultada el 22 de julio de 2026, detalla la API y sus garantías.