Módulo Os
En Python, el módulo os es una biblioteca estándar que proporciona una interfaz para interactuar con el sistema operativo en el que se ejecuta el programa. Permite realizar operaciones relacionadas como la gestión de archivos, directorios, rutas, variables de entorno y otras funcionalidades del sistema operativo.
Manejo de archivos y carpetas
Obtener el directorio actual
Para obtener el directorio de trabajo actual, usamos el método .getcwd()
(get current working directory).
Esta función devuelve el directorio actual en forma de cadena:
1
2
3
import os
print(os.getcwd())
1
'/home/usuario/proyecto_python'
La salida dependerá del sistema operativo que estés usando. En Windows podrías obtener algo así
C:\\usuario\\proyecto_python
Cambiar el directorio de trabajo
Podemos cambiar de directorio usando la función chdir()
(change directory). Los directorios pueden ser relativos o absolutos.
En sistemas operativos basados en Unix, tenemos los siguientes atajos:
'.'
: Es el directorio actual.'..'
: Es el directorio anterior./
: Es el directorio raíz.
1
2
3
4
5
import os
print(os.getcwd())
os.chdir('..')
print(os.getcwd())
1
2
'/home/usuario/proyecto_python'
'/home/usuario/'
Unir directorios
Según el sistema operativo las barras o separadores de directorio se escriben de diferentes maneras. Para no tener ese problema es recomendable usar el método os.path.join()
como en el siguiente ejemplo:
1
2
directorio = os.path.join('/home', 'usuario', 'ejercicios_python')
os.chdir(directorio)
Es recomendable usar el método
os.path.join
es más flexible para las barras separadoras de directorio.
Usar directorios relativos al actual (que comienzan con
'./'
) y no absolutos (que comienzan con'/'
) facilita la portabilidad del código de una máquina a otra.
Listar directorios y archivos
La función listdir()
toma un directorio (path o camino) y devuelve una lista con todos los archivos y subdirectorios de ese directorio. Si no se le pasa ningún parámetro, devuelve los del directorio de trabajo actual.
1
2
3
import os
print(os.listdir())
1
2
3
4
5
ejercicio_1.py
ejercicio_2.py
ejercicio_3.py
ejercicio_4.py
ejercicio_5.py
Crear un nuevo directorio
Esta función toma como argumento la ruta (path) del nuevo directorio. Si no se especifica la ruta absoluta, el directorio nuevo se crea en el directorio de trabajo actual.
1
2
3
4
5
6
import os
os.mkdir('test') # crea el directorio dentro del directorio actual de trabajo
os.mkdir(os.path.join('test', 'carpeta_nueva')) # crea un subdirectorio dentro de test
print(os.listdir('test'))
1
['carpeta']
Renombrar un directorio o un archivo
Para renombrar un directorio o archivo, la función rename()
toma dos argumentos, el biejo nombre y el nuevo nombre:
1
2
3
4
5
6
7
import os
os.chdir('test') # entramos al directorio creado test
print(os.listdir()) # listamos y podemos ver el subdirectorio 'carpeta'
os.rename('carpeta', 'nueva_carpeta')
print(os.listdir()) # vuelvo a listar y ver el nuevo nombre
1
2
['carpeta']
['nueva_carpeta']
La función
rename()
también es útil para mover un archivo o directorio, cambiando la ruta de acceso al archivo. Probar el siguiente código.
1
os.rename(os.path.join('test', 'nueva_carpeta'), 'nueva_carpeta')
Eliminar un directorio o un archivo
A continuación usaremos comandos que borran archivos sin pasar por ninguna papelera de reciclaje. Estas acciones no pueden deshacerse.
Podemos eliminar un archivo usando la función remove()
. También podemos eliminar un directorio vacío usando rmdir()
.
En el siguiente código trabajaremos en una carpeta que tiene esta estructura:
1
2
3
4
nueva_carpeta
├── archivo.txt
└── otra_carpeta
└── otro_archivo.txt
1
2
3
4
import os
os.chdir('nueva_carpeta') # entramos al directorio
os.remove('archivo.txt') # eliminamos el archivo
Ojo:
rmdir()
solamente puede borrar directorios si están vacíos. Para eliminar un directorio que no está vacío, podemos usarrmtree()
del móduloshutil
.
1
2
3
4
5
6
7
import os, shutil
os.chdir('nueva_carpeta') # entramos al directorio
shutil.rmtree('otra_carpeta') # eliminamos el subdirectorio y su contenido
os.chdir("..") # retrocedemos un nivel
print(os.listdir())
1
[]
Variables de entornos en Python
Acceder a las variables de entornos del sistema
Para acceder con Python a las variables de entorno del sistema, usamos environ
:
1
2
3
import os
print(os.environ)
1
environ({'HOME': '...', 'USER': '...', ... })
Esto imprimirá la lista de variables cargadas en el sistema operativo en formato de diccionario cada variable estará especificada en pares de clave:valor
Mi lema es