Inicio·Mensajes de error

python · Python

El mensaje

PermissionError: [Errno 13] Permission denied

Qué significa

El sistema operativo rechazó esa operación sobre esa ruta. Estabas escribiendo en un lugar propiedad de otro, como /var/log o /usr, o en un volumen montado en un contenedor cuyo UID no coincide con el usuario del contenedor, o —el caso que se pasa por alto— no tienes permiso de escritura en el directorio y no en el archivo, que es lo que hace falta para crear uno nuevo. Comprueba primero propietario y modo con ls -ld y, antes de recurrir a sudo, considera mover la ruta a un lugar donde sí puedas escribir: un archivo creado con sudo dará el mismo error la próxima vez que lo abras sin sudo.

El arreglo

ls -ld /var/log/app.log
Lo imprime
python
Python
18

Un traceback de Python divide la respuesta en dos: la última línea dice qué falló y los marcos de arriba dicen dónde, así que leer solo la última línea te da el nombre y te quita el lugar; y en los errores por valor ausente, como NoneType y KeyError, la causa casi siempre está en un marco superior al que se rompió.

Cómo leer un mensaje de error

  • Lee desde la primera línea. Cuanto más abajo, más son las tripas de la herramienta; la causa suele estar arriba.
  • Si hay un archivo y un número de línea, empieza ahí: no el marco superior de la pila, sino la línea más alta que nombre un archivo tuyo.
  • Busca el mensaje literal, pero quita antes tus rutas y nombres de variables: eso es lo que impide que la búsqueda coincida.
  • La misma condición se redacta distinto según la versión. Si los resultados no cuadran, añade el número de versión.
  • Antes de pegar un arreglo, comprueba qué descarta. Algunos no se pueden deshacer.

Preguntas frecuentes

Q. ¿Qué significa «PermissionError: [Errno 13] Permission denied»?

El sistema operativo rechazó esa operación sobre esa ruta. Estabas escribiendo en un lugar propiedad de otro, como /var/log o /usr, o en un volumen montado en un contenedor cuyo UID no coincide con el usuario del contenedor, o —el caso que se pasa por alto— no tienes permiso de escritura en el directorio y no en el archivo, que es lo que hace falta para crear uno nuevo. Comprueba primero propietario y modo con ls -ld y, antes de recurrir a sudo, considera mover la ruta a un lugar donde sí puedas escribir: un archivo creado con sudo dará el mismo error la próxima vez que lo abras sin sudo.

Q. ¿Cómo se arregla?

ls -ld /var/log/app.log — antes de ejecutarlo, mira arriba qué descarta este comando.

Q. ¿Qué herramienta lo imprime?

python. Está en Python y el mensaje tiene 5 palabras.

Errores cercanos