Entrada

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.

gif

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 usar rmtree() del módulo shutil.

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

Esta entrada está licenciada bajo CC BY 4.0 por el autor.