IOError: [Errno 13] Permiso denegado en Python

Zeeshan Afridi 21 junio 2023
  1. ¿Qué es el IOError: [Errno 13] Permiso denegado en el manejo de archivos en Python?
  2. Cómo arreglar el IOError: [Errno 13] Permiso denegado en Python
  3. Cómo usar el comando chmod para cambiar los permisos de un archivo en Python
IOError: [Errno 13] Permiso denegado en Python

Es común obtener IOError porque los humanos interactuamos principalmente con la GUI de una computadora; entendemos la diferencia entre carpetas, archivos, archivos comprimidos o aplicaciones de las imágenes.

Hemos interactuado con carpetas, archivos, archivos comprimidos o aplicaciones con tanta frecuencia que ahora nuestro cerebro a veces no procesa para diferenciarlos.

Pero, por otro lado, tienes que alimentar todo a las computadoras, no solo entienden las imágenes; más bien, debe proporcionar los detalles completos.

¿Qué es el IOError: [Errno 13] Permiso denegado en el manejo de archivos en Python?

En el manejo de archivos, debe proporcionar la ruta completa del archivo al que desea acceder; de lo contrario, obtendrá el IOError. Si desea abrir un archivo pero ha proporcionado la ruta de la carpeta, se encontrará con el IOError: [Errno 13] Permiso denegado.

A continuación se muestra un ejemplo de código del error en Python.

# opening file
f = open("E:\Projects\Test_folder", "r")

Producción :

PermissionError: [Errno 13] Permission denied: 'E:\\Projects\\Test_folder'

En el ejemplo anterior, estamos tratando de abrir la Carpeta_prueba en modo lectura, pero esto arroja el PermisoError: [Errno 13] Permiso denegado.

Cómo arreglar el IOError: [Errno 13] Permiso denegado en Python

Para solucionar esto, debe ingresar la ruta correcta al archivo al que desea acceder, no a la carpeta. Digamos que tenemos dos archivos en Test_folder.

import os

# Folder Path
folder_path = "E:\Client Project Report\Test_folder"

# display all files in a folder
print(f"All files in the Test_folder are\n{os.listdir(folder_path)}")

# file path
file_path = "E:\Client Project Report\Test_folder\Test_file_1.txt"

# read file
f = open(file_path, "r")
print(f"\n{f.read()}")

# file closed
f.close()

Producción :

All files in the Test_folder are
['Test_file_1.txt', 'Test_file_2.txt']

Hi There!
This is test file 1

Después de proporcionar la ruta del archivo, se resuelve el error. Además, es una buena práctica cerrar los archivos abiertos en Python para que nadie pueda seguir leyendo y escribiendo ese archivo hasta que se vuelva a abrir, y si está tratando de escribir o leer un archivo cerrado, aparecerá un ValorError.

Aunque Python cierra automáticamente un archivo cuando el objeto de referencia del archivo se asigna a otro archivo. Pero aún así, es una buena práctica cerrar un archivo con la función cerrar().

Además, también puede usar el mecanismo de manejo de excepciones como los bloques try-catch para detectar dichos errores y evitar que su programa se bloquee.

Cómo usar el comando chmod para cambiar los permisos de un archivo en Python

Como se mencionó, el IOError: [Errno 13] Permiso denegado ocurre cuando intenta abrir un archivo que no está permitido.

Digamos que desea abrir una carpeta a la que no tiene permitido el acceso, pero aún así, intenta escribir un script en Python para abrir esa carpeta, se denegará el permiso para acceder a la carpeta y el compilador de Python arrojará el error. .

Para resolver este error, podemos usar el comando chmod, que significa cambio de modo. El chmod() requiere dos argumentos, la ruta del archivo/carpeta al que desea acceder y el modo de archivo.

El comando chmod se usa para cambiar el permiso de archivo de un archivo, y se hace cambiando los indicadores de permiso de un archivo en particular.

Los indicadores de permiso están representados por un valor octal de tres dígitos que se utiliza para especificar permisos de lectura, escritura y ejecución para el propietario del archivo, el grupo de archivos y todos los demás usuarios.

Sintaxis de chmod:

chmod(path, mode)

El comando toma dos argumentos:

  1. La primera es la ruta al archivo cuyos permisos desea cambiar.
  2. Y el segundo es el permiso que desea configurar.

Digamos que quiere otorgar permisos de lectura y escritura a todos para un archivo llamado nombre de archivo; usaría el siguiente comando.

chmod 777 filename

El script de Python para el comando anterior sería:

import os

os.chmod("my_file", 0o777)

Este fragmento de código también se puede representar como:

import os
import stat

path = "E:\Project\file1.txt"

# stat.S_IRWXU --> All permissions (Read, write, and execute) to the owner
# stat.S_IRWXG --> All permissions (Read, write, and execute) to group
# stat.S_IRWXO --> All permissions (Read, write, and execute) to others

print(os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO))

Esto daría a todos permisos de lectura, escritura y ejecución del archivo específico.

¿Qué representa el número octal tres en chmod?

Los permisos de un archivo se pueden representar mediante un número octal. El número octal se compone de tres dígitos, cada uno de los cuales representa un permiso diferente.

  1. El primer dígito representa el permiso del propietario.
  2. El segundo dígito representa los permisos del grupo.
  3. Y el tercer dígito representa los permisos para otros.

Los permisos de un archivo se pueden cambiar usando el comando chmod con el número octal que representa los permisos deseados.

Por ejemplo, para otorgar al propietario de un archivo permisos de lectura, escritura y ejecución, mientras que al grupo y a otros solo se le otorgan permisos de lectura y ejecución, se puede usar el número octal 755.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Python Error