Cambiar permisos de archivo en Python
- Permisos de archivos del sistema operativo en Python
-
Use
chmod()
para cambiar los permisos de archivo en Python
Cuando se trabaja con archivos dentro de Python o alrededor de una aplicación de Python, puede ser imperativo tener los permisos de archivo adecuados para ayudar a lograr las operaciones previstas. Desde archivos de script de trabajo hasta exportaciones de datos, los archivos creados, actualizados o administrados por las aplicaciones de Python también se pueden trabajar con el código de Python.
Por lo general, la forma habitual para que la mayoría de los desarrolladores trabajen con permisos de archivo es usar secuencias de comandos o comandos de línea de comandos. Sin embargo, es posible cambiar los permisos de archivo dentro de Python utilizando bibliotecas integradas específicas y sus métodos.
Este artículo discutirá cómo cambiar los permisos de archivo en Python.
Permisos de archivos del sistema operativo en Python
Dentro de los sistemas operativos, desde Windows hasta Linux, diferentes permisos son nativos de ellos. Los permisos para leer, escribir y ejecutar se establecen en los archivos según su finalidad.
El Explorador de archivos a menudo proporciona interfaces de usuario que permiten a los usuarios típicos cambiar los permisos de archivo otorgados a un archivo. Sin embargo, para la mayoría de los desarrolladores, la interfaz de línea de comandos es donde sucede.
Para Linux (generalmente sistemas Unix) e incluso Windows, puede verificar los permisos del archivo, entre otra información que contiene un archivo.
En Windows:
ls
Producción :
Directory: C:\Users\USER
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 7/13/2022 8:09 PM .android
d----- 9/23/2022 8:11 PM .vscode
d-r--- 5/9/2022 1:34 PM 3D Objects
d----- 5/12/2022 11:49 PM Apple
d----- 8/30/2022 1:20 PM Autodesk
d-r--- 3/18/2022 6:34 AM Contacts
d-r--- 9/23/2022 8:19 PM Desktop
d-r--- 9/23/2022 8:52 PM Documents
d-r--- 9/28/2022 12:48 PM Downloads
d-r--- 3/18/2022 6:34 AM Favorites
d-r--- 4/28/2022 11:03 AM Links
d-r--- 7/16/2022 10:41 PM Music
d-r--- 4/11/2022 11:39 PM OneDrive
d-r--- 9/22/2022 11:13 AM Pictures
d-r--- 3/18/2022 6:34 AM Saved Games
d-r--- 3/18/2022 6:35 AM Searches
d-r--- 9/26/2022 2:49 PM Videos
-a---- 9/23/2022 8:25 PM 5 .node_repl_history
-a---- 9/27/2022 2:34 AM 1100 pslog.txt
La pestaña modo
contiene la información permiso de archivo, que es la primera columna que muestra el tipo de archivo.
De manera similar, para sistemas Unix como Linux, puede enumerar toda la información del archivo.
ls -la
Producción :
drwxr-xr-x 6 eva users 1024 Jun 8 16:46 sabon
-rw------- 1 eva users 1564 Apr 28 14:35 splus
-rw------- 1 eva users 1119 Apr 28 16:00 splus2
-rw-r--r-- 1 eva users 9753 Sep 27 11:14 ssh_known_hosts
-rw-r--r-- 1 eva users 4131 Sep 21 15:23 swlist.out
-rw-r--r-- 1 eva users 94031 Sep 1 16:07 tarnti.zip
Además, la primera columna contiene la moda (drwxr-xr-x
). En la primera columna, hay cuatro desgloses.
El primer desglose es el primer carácter que representa el tipo de archivo real. El segundo desglose (los siguientes tres caracteres) muestra los derechos de acceso (o permisos) del usuario.
El tercer desglose (los siguientes tres caracteres) muestra los permisos del grupo propietario del archivo. Y el último desglose (últimos tres caracteres) muestra los permisos de otros usuarios.
Ahora, usemos este modo drwxr-xr-x
para explicarlo. Antes de continuar, necesita saber qué representan las tres letras:
r
significa leer.w
significa escribir.x
significa ejecutar.
A cada archivo o directorio se le asignan derechos de acceso para el propietario del archivo, los miembros de un grupo de usuarios relacionados y otros. Los derechos se pueden establecer en:
- Leer un archivo.
- Escriba un archivo.
- Ejecutar un archivo.
El primer carácter, d
, indica que se trata de un directorio. Sin embargo, si el carácter es -
, es un archivo típico.
Los siguientes tres conjuntos de caracteres, rwx
, significa que los usuarios pueden leer, escribir y ejecutar el directorio. Los siguientes tres, r-x
, significa que el grupo puede leer y ejecutar pero no escribir el directorio.
Los últimos tres, r-x
, significa que otros pueden leer y ejecutar pero no escribir el directorio.
Entonces, para cambiar el permiso de un archivo en Linux, un simple comando chmod
suele ser útil.
chmod u+x someFile
El u+x
es el permiso otorgado a someFile
.
El permiso u+x
añade (+
) derechos de ejecución al usuario (recordar, usuario, grupo y otros usuarios) de someFile
. Recuerda, ejecutar está representado por x
.
Pero podemos lograr esto dentro de Python con bastante facilidad. Con este conocimiento, ahora puede cambiar los permisos de los archivos dentro de Python sin ningún problema.
Use chmod()
para cambiar los permisos de archivo en Python
El método chmod()
proviene del comando chmod
dentro de Linux, cuyo trabajo es cambiar el modo de un archivo o directorio. El método chmod()
está disponible a través del módulo os
, que es un valor predeterminado con cualquier instalación o entorno de Python.
El módulo os
proporciona interfaces y métodos para permitirnos interactuar con cualquier sistema operativo. Proporciona rutinas de SO para NT o Posix, dependiendo de su sistema.
Entre muchas funciones, nos permite administrar directorios, recuperar su contenido y cambiar los comportamientos y modos dentro de dichos directorios.
Además del método chmod()
, necesitamos otro módulo llamado stat
, que proporciona constantes/funciones para interpretar los resultados de os.stat()
y os.lstat()
. Esta “estadística” proporciona los indicadores de permiso que necesitaremos para cambiar los permisos de archivo en el usuario, grupo u otros usuarios.
Los indicadores de permisos incluyen operaciones de lectura, escritura y ejecución.
Debemos importar sus módulos para usar chmod()
y stat
.
import os
import stat
Además, necesitamos acceder al archivo que queremos cambiar sus permisos. El módulo os
también es útil para eso.
El chmod()
funciona con la siguiente sintaxis:
os.chmod(filePath, permissionFlag)
Para verificar el modo de permiso actual de un archivo (digamos, un index.txt
recién creado), puede usar el método stat()
.
perm = os.stat("index.txt")
print(perm.st_mode)
Producción :
33206
El os.stat()
obtiene el estado de una ruta específica, y la propiedad st_mode
proporciona los bits de permiso del archivo donde los dos primeros dígitos octales especifican el tipo de archivo y los otros cuatro son los permisos del archivo.
El archivo debe estar dentro del mismo directorio que el archivo Python o colocar la ruta completa del archivo.
Usando la notación octal (una de las dos formas de especificar permisos) para los usuarios de Linux, podemos pensar en la configuración de permisos como una serie de bits, que se pueden ver descritos en el fragmento de código a continuación.
rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000
# rwx = 111 in binary = 7
# rw- = 110 in binary = 6
# r-x = 101 in binary = 5
# r-- = 100 in binary = 4
Para cambiar el modo de permiso, puede usar las banderas de permiso stat
:
import os
import stat
perm = os.stat("index.txt")
print(perm.st_mode)
os.chmod("index.txt", stat.S_IWGRP)
perm = os.stat("index.txt")
print(perm.st_mode)
Producción :
33206
33060
El primer número octal muestra el estado de los permisos antes del cambio, y el segundo número octal es el que aparece después de agregar los permisos de lectura por grupo.
Puede combinar diferentes banderas de permisos usando el |
operador. En este ejemplo, agregaremos los permisos para que el usuario lea, escriba y ejecute.
import os
import stat
perm = os.stat("index.txt")
print(perm.st_mode)
os.chmod("index.txt", stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC | stat.S_IRUSR)
perm = os.stat("index.txt")
print(perm.st_mode)
Producción :
33060
33206
Hay otras banderas de permisos que se pueden ver a continuación:
- Indicadores
stat.S_IREAD
,stat.S_IWRITE
ystat.S_IEXEC
para agregar derechos de lectura, escritura y ejecución para un usuario a un archivo, respectivamente. - Indicadores
stat.S_IRGRP
,stat.S_IWGRP
ystat.S_IXGRP
para agregar derechos de lectura, escritura y ejecución para un grupo a un archivo, respectivamente. - Indicadores
stat.S_IROTH
,stat.S_IWOTH
ystat.S_IXOTH
para agregar derechos de lectura, escritura y ejecución para otros usuarios a un archivo, respectivamente. - Indicadores
stat.S_IRWXU
,stat.S_IRWXG
ystat.S_IRWXO
para agregar derechos de lectura, escritura y ejecución simultáneamente para el usuario, grupo y otros usuarios, respectivamente.
Aparte de usar las banderas de permisos, puedes usar las notaciones octales dentro del método chmod()
. Usemos el número octal 755
, que especifica que el usuario puede leer, escribir y ejecutar, y el grupo y otros usuarios solo pueden leer y ejecutar.
os.chmod("index.txt", 0o755)
Producción :
33206
Debes agregar el prefijo 0o
para indicar que es una notación octal.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn