Este tutorial proporciona una guía completa sobre la manipulación esencial de archivos y directorios en Python, aprovechando el poder de los módulos os
y shutil
. Cubriremos la creación, el acceso, el listado, la modificación y la eliminación de directorios, equipándote con las habilidades para gestionar tu sistema de archivos de forma efectiva dentro de tus scripts de Python.
Tabla de Contenidos
- Creando Directorios
- Obteniendo el Directorio Actual
- Listando el Contenido del Directorio
- Cambiando el Directorio de Trabajo
- Renombrando y Eliminando Directorios
- Técnicas de Manipulación de Rutas
- Manejo Robusto de Errores
1. Creando Directorios
El módulo os
ofrece funciones para interactuar con el sistema operativo. os.mkdir()
crea un único directorio, mientras que os.makedirs()
maneja la creación de directorios anidados. El parámetro exist_ok
previene errores si el directorio ya existe.
import os
# Crear un directorio único
os.mkdir("my_new_directory")
# Crear directorios anidados
os.makedirs("nested/directories/example", exist_ok=True)
print("¡Directorios creados correctamente!")
2. Obteniendo el Directorio Actual
Usa os.getcwd()
para recuperar el directorio de trabajo actual.
import os
directorio_actual = os.getcwd()
print(f"Directorio de trabajo actual: {directorio_actual}")
3. Listando el Contenido del Directorio
os.listdir()
lista todas las entradas (archivos y directorios) dentro de una ruta. Combínalo con os.path.isdir()
para filtrar solo los directorios.
import os
ruta_directorio = "."
todas_las_entradas = os.listdir(ruta_directorio)
directorios = [entrada for entrada in todas_las_entradas if os.path.isdir(os.path.join(ruta_directorio, entrada))]
print("Directorios:")
for directorio in directorios:
print(directorio)
4. Cambiando el Directorio de Trabajo
os.chdir()
altera el directorio de trabajo actual. Siempre incluye manejo de errores (ej. usando bloques try-except
) para gestionar posibles problemas como directorios inexistentes.
import os
try:
os.chdir("my_new_directory")
print(f"Directorio de trabajo actual cambiado a: {os.getcwd()}")
os.chdir("..") #Subir un nivel de directorio
print(f"Directorio de trabajo actual cambiado a: {os.getcwd()}")
except FileNotFoundError:
print("Error: Directorio no encontrado.")
except OSError as e:
print(f"Ocurrió un error del sistema operativo: {e}")
5. Renombrando y Eliminando Directorios
os.rename()
renombra directorios. os.rmdir()
elimina directorios vacíos. Para directorios no vacíos, usa shutil.rmtree()
con extrema precaución, ya que elimina recursivamente todo dentro del directorio objetivo. Siempre realiza una copia de seguridad de los datos importantes antes de usar esta función.
import os
import shutil
# Renombrar un directorio
os.rename("my_new_directory", "renamed_directory")
# Eliminar un directorio vacío
os.rmdir("empty_directory") #Requiere un directorio vacío llamado "empty_directory"
# Eliminar un directorio no vacío (¡usar con extrema precaución!)
shutil.rmtree("non_empty_directory") #Requiere un directorio llamado "non_empty_directory" - esto eliminará todo dentro.
print("Operaciones de directorio completadas.")
6. Técnicas de Manipulación de Rutas
El módulo os.path
proporciona herramientas para la manipulación segura y portable de rutas, crucial para evitar problemas específicos de la plataforma.
import os
# Uniendo rutas de forma segura
ruta = os.path.join("path", "to", "my", "file.txt")
# Obteniendo el nombre del archivo y la extensión
nombre_archivo, extension_archivo = os.path.splitext(ruta)
# Comprobando si una ruta existe
if os.path.exists(ruta):
print("La ruta existe")
7. Manejo Robusto de Errores
Siempre anticipa posibles errores (ej. FileNotFoundError
, PermissionError
, OSError
) e implementa mecanismos de manejo de errores apropiados para hacer tu código robusto y prevenir caídas inesperadas.