¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Leer un error y encontrar la solución

Después de esta lección: Puedo leer un mensaje de error y encontrar la solución.

Lección de 50 minSin comandos

Un mensaje rojo a las siete

Una cadena de cafeterías calcula cada noche el importe medio de sus tickets. El martes, el informe no llega.

Tu responsable te reenvía doce líneas de texto rojo y una pregunta: qué ha pasado.

Parece mucho, pero casi siempre basta con leer bien dos líneas.

Al final de esta lección

Nota

Puedo leer un mensaje de error y encontrar la solución.

Palabras clave

PalabraQué significaEjemplo
Mensaje de errortexto que explica por qué se ha parado un programa
Tracebackinforme de Python que dice dónde se ha parado
Tipo de errornombre de lo que ha falladoZeroDivisionError
Documentaciónmanual oficial de una herramienta
SSHforma segura de entrar en un servidor remoto

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un traceback se lee de abajo arriba

La última línea es la que más importa. Dice el tipo de error y una frase corta.

Justo encima está el dónde: el archivo, el número de línea y el código que falló.

Si hay muchas líneas, sube desde abajo hasta la primera que nombra tu propio archivo. Ahí suele estar la causa.

Provoca un error y léelo

Código: python
def average_ticket(amounts):
    total = 0
    for amount in amounts:
        total = total + amount
    return total / len(amounts)


# Los tickets del lunes, en euros.
print(average_ticket([4.5, 12.0, 7.25]))

# El martes la cafetería cerró: no hay tickets.
print(average_ticket([]))

Ejemplo resuelto: errores que verás a menudo

Última líneaQué significaQué miras primero
NameError: name 'totl' is not definedUn nombre que no existeSi está mal escrito
KeyError: 'status'Esa clave no está en el diccionarioLas claves que sí llegan
IndexError: list index out of rangeEsa posición no existeCuántos elementos hay
TypeError: can only concatenate str (not "int") to strMezclas texto y númerosDe qué tipo es cada valor
FileNotFoundError: No such file or directoryEse archivo no estáLa ruta y la carpeta actual

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente empieza a leer un traceback por arriba y se pierde. Lo importante está al final. Lee primero la última línea y después sube hasta la primera línea de tu propio código.

La documentación responde antes que nadie

Cuando no entiendes un error, busca el tipo y la frase tal cual. Quita tus datos, como nombres o rutas propias.

Prefiere la documentación oficial de la herramienta. Es la fuente más fiable y está al día.

En la terminal, casi todos los comandos tienen --help. Muestra sus opciones en unas líneas.

Lee la ayuda de un comando

Código: bash
# Casi todos los comandos explican sus opciones con --help.
grep --help 2>&1 | head -n 6

# Busca dentro de la ayuda la opción que ignora mayúsculas.
grep --help 2>&1 | grep -- '-i'

# Te toca: mira las primeras líneas de la ayuda de ls.

Una buena pregunta se responde rápido

Si te atascas, pregunta a tu equipo. Una buena pregunta tiene cuatro partes: qué querías, qué hiciste, el error exacto y qué has probado.

Muchos errores pasan en un servidor, no en tu portátil. Para llegar a él se usa SSH: abres una terminal en esa máquina y lees su registro.

Ejemplo resuelto: dos formas de preguntar

PartePregunta flojaPregunta buena
Qué queríasNo funcionaQuiero el importe medio de cada día
Qué hicisteNadaEjecuté media.py con los tickets del martes
El error exactoSale algo rojoZeroDivisionError en la línea 5
Qué has probadoNadaCon los tickets del lunes funciona

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Encontrar el error en el servidor

Código: bash
# Desde tu portátil entras en el servidor de informes.
$ ssh [email protected]
lucia@informes:~$

# Ya estás dentro. Lees el final del registro del informe nocturno.
lucia@informes:~$ tail -n 4 /var/log/informes/nocturno.log
Traceback (most recent call last):
  File "/opt/informes/media.py", line 5, in average_ticket
    return total / len(amounts)
ZeroDivisionError: division by zero

# Sales del servidor y vuelves a tu portátil.
lucia@informes:~$ exit

Lo que espera quien te contrata

Consejo

Nadie espera que sepas todos los errores de memoria. Sí esperan que leas el mensaje, busques con calma y preguntes con datos. Eso es lo que se valora en las primeras semanas.

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.