IOError: [Errno 13] Permiso denegado en Python
-
¿Qué es el
IOError: [Errno 13] Permiso denegado
en el manejo de archivos en Python? -
Cómo arreglar el
IOError: [Errno 13] Permiso denegado
en Python -
Cómo usar el comando
chmod
para cambiar los permisos de un archivo 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:
- La primera es la ruta al archivo cuyos permisos desea cambiar.
- 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.
- El primer dígito representa el permiso del propietario.
- El segundo dígito representa los permisos del grupo.
- 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 is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedInArtículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python