Python Tutorials

Dominando las Operaciones con Archivos y Directorios en Python

Spread the love

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

  1. Creando Directorios
  2. Obteniendo el Directorio Actual
  3. Listando el Contenido del Directorio
  4. Cambiando el Directorio de Trabajo
  5. Renombrando y Eliminando Directorios
  6. Técnicas de Manipulación de Rutas
  7. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *