Módulo os en Python: archivos, carpetas y entorno

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
Manipulação de arquivos e pastas usando módulo os em Python

El módulo os en Python permite interactuar con el sistema operativo desde un script. Con él puedes consultar la carpeta actual, crear directorios, listar archivos, renombrar elementos, leer variables de entorno y combinar rutas de forma compatible con Windows, macOS y Linux.

Aunque pathlib ofrece una interfaz más moderna para muchas tareas de archivos, os sigue siendo fundamental porque incluye operaciones de entorno, procesos, permisos y compatibilidad con APIs tradicionales.

Importar el módulo os

import os

print(os.name)

os.name suele devolver nt en Windows y posix en Linux o macOS. No conviene basar toda la lógica del programa en este valor; normalmente es mejor utilizar funciones portables.

La documentación oficial del módulo os reúne las funciones disponibles en cada sistema.

Consultar y cambiar la carpeta actual

import os

current = os.getcwd()
print(current)

os.getcwd() devuelve el directorio de trabajo del proceso. No siempre coincide con la carpeta donde está el script.

os.chdir("reports")
print(os.getcwd())

Cambiar la carpeta global puede dificultar el mantenimiento. En proyectos grandes suele ser mejor construir rutas explícitas. La guía de pathlib en Python muestra una alternativa orientada a objetos.

Listar archivos y carpetas

items = os.listdir(".")

for item in items:
    print(item)

listdir() devuelve nombres, no rutas completas. Para combinar la carpeta base:

folder = "documents"

for name in os.listdir(folder):
    full_path = os.path.join(folder, name)
    print(full_path)

La función os.scandir() puede ser más eficiente y ofrece información adicional:

with os.scandir(folder) as entries:
    for entry in entries:
        if entry.is_file():
            print("File:", entry.name)
        elif entry.is_dir():
            print("Folder:", entry.name)

Crear directorios

os.mkdir() crea una sola carpeta:

os.mkdir("output")

Si necesitas varios niveles, usa os.makedirs():

os.makedirs(
    "reports/2026/july",
    exist_ok=True,
)

exist_ok=True evita un error cuando el directorio ya existe.

Comprobar existencia y tipo

path = "data/sales.csv"

print(os.path.exists(path))
print(os.path.isfile(path))
print(os.path.isdir(path))

Estas comprobaciones son útiles, pero un archivo puede desaparecer entre la prueba y la operación. Para acciones críticas, también debes manejar excepciones. La guía de try y except en Python explica cómo responder a errores de permisos y rutas.

Combinar rutas correctamente

No concatenes separadores manualmente:

# Evitar
path = folder + "/" + filename

# Mejor
path = os.path.join(folder, filename)

os.path.join() utiliza el separador apropiado del sistema. Otras funciones útiles son:

print(os.path.basename(path))
print(os.path.dirname(path))
print(os.path.splitext(path))
print(os.path.abspath(path))

Renombrar y mover

os.rename(
    "reports/old.txt",
    "reports/new.txt",
)

os.replace() puede sustituir el destino cuando el sistema lo permite:

os.replace(
    "temp/report.tmp",
    "reports/report.txt",
)

Para mover archivos entre discos o copiar carpetas, shutil suele ser más adecuado. La guía de automatización de tareas con Python presenta organizadores de archivos y copias de seguridad.

Eliminar archivos y directorios

os.remove("temporary.txt")
os.rmdir("empty_folder")

os.rmdir() solo elimina carpetas vacías. Para un árbol completo, shutil.rmtree() es potente pero peligroso. Valida la ruta, utiliza copias y considera un modo de simulación antes de borrar.

Recorrer un árbol de carpetas

for root, directories, files in os.walk("project"):
    print("Folder:", root)

    for filename in files:
        full_path = os.path.join(root, filename)
        print("  ", full_path)

os.walk() resulta útil para buscar extensiones, calcular tamaños y crear inventarios.

Ejemplo: localizar archivos grandes

import os

LIMIT = 10 * 1024 * 1024

for root, _, files in os.walk("downloads"):
    for filename in files:
        path = os.path.join(root, filename)

        try:
            size = os.path.getsize(path)
        except OSError as error:
            print(f"No se pudo leer {path}: {error}")
            continue

        if size >= LIMIT:
            print(path, size)

Este ejemplo captura errores por archivo para que un elemento inaccesible no detenga todo el análisis.

Variables de entorno

os.environ ofrece acceso a las variables del proceso:

database_url = os.environ.get("DATABASE_URL")

if database_url is None:
    raise RuntimeError("Falta DATABASE_URL")

Para establecer una variable temporal dentro del proceso:

os.environ["APP_MODE"] = "development"

Las variables de entorno son apropiadas para configuración y secretos, pero no debes imprimirlas completas en logs.

Expandir rutas del usuario

home = os.path.expanduser("~")
config = os.path.expandvars(
    "$HOME/.config/myapp/settings.json"
)

El resultado depende del sistema y de las variables disponibles.

Información de archivos

stats = os.stat("report.txt")

print(stats.st_size)
print(stats.st_mtime)

Para convertir la marca temporal:

from datetime import datetime

modified = datetime.fromtimestamp(stats.st_mtime)
print(modified)

La guía de datetime en Python explica formatos y operaciones con fechas.

Ejemplo: organizar archivos por extensión

import os
import shutil

source = "incoming"

categories = {
    ".pdf": "documents",
    ".csv": "data",
    ".jpg": "images",
    ".png": "images",
}

for filename in os.listdir(source):
    current = os.path.join(source, filename)

    if not os.path.isfile(current):
        continue

    extension = os.path.splitext(filename)[1].lower()
    category = categories.get(extension, "other")
    target_folder = os.path.join(source, category)
    os.makedirs(target_folder, exist_ok=True)

    destination = os.path.join(target_folder, filename)

    if os.path.exists(destination):
        print("Destino existente:", destination)
        continue

    shutil.move(current, destination)

Antes de ejecutar una automatización destructiva, prueba con una carpeta de ejemplo y registra cada operación. La guía de logging en Python explica cómo guardar un historial.

os frente a pathlib

os sigue siendo útil para variables de entorno, permisos, procesos y funciones de bajo nivel. pathlib suele ofrecer una sintaxis más clara para rutas y archivos. Ambos módulos pueden utilizarse juntos:

from pathlib import Path
import os

base = Path(os.environ.get("APP_DATA", "."))
report = base / "reports" / "summary.txt"

Errores frecuentes

  • Suponer que el directorio actual es la carpeta del script.
  • Concatenar rutas con barras manualmente.
  • Borrar directorios sin validar el destino.
  • No manejar PermissionError o FileNotFoundError.
  • Guardar secretos directamente en el código.
  • Cambiar el directorio global sin necesidad.
  • Ignorar diferencias entre sistemas operativos.

Fuentes oficiales

Además de la referencia principal de os, la documentación oficial de os.path describe las operaciones de rutas.

Conclusión

El módulo os permite consultar el entorno, crear carpetas, recorrer directorios, manipular rutas y leer configuración. Utiliza funciones portables, maneja excepciones y protege cualquier operación que pueda sobrescribir o eliminar datos. Para rutas modernas, combina estos conocimientos con pathlib.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Manipulação moderna de arquivos usando pathlib em Python
    Bibliotecas y Módulos
    Foto de perfil de Leandro Hirt da Academify

    Pathlib en Python: rutas y archivos de forma moderna

    Aprende pathlib en Python para crear rutas, leer y escribir archivos, recorrer carpetas, filtrar extensiones, renombrar y organizar datos.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Uso do Counter do collections para contar elementos em Python
    Bibliotecas y Módulos
    Foto de perfil de Leandro Hirt da Academify

    Counter en Python: contar elementos con collections

    Aprende Counter en Python para contar elementos, encontrar valores frecuentes, actualizar conteos, comparar resultados y analizar datos reales.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Logo do Python com expressão pensativa sobreposto a uma biblioteca com estantes cheias de livros, representando o conceito de bibliotecas em Python
    Bibliotecas y Módulos
    Foto de perfil de Leandro Hirt da Academify

    Bibliotecas de Python: qué son y cómo usarlas

    Aprende qué son las bibliotecas de Python, cómo se relacionan con módulos y paquetes, cómo instalarlas con pip y cómo

    Ler mais

    Tempo de leitura: 6 minutos
    11/07/2026
    Estatísticas e análise de dados com Python
    Bibliotecas y Módulos
    Foto de perfil de Leandro Hirt da Academify

    Funciones integradas de Python: guía práctica

    Aprende las funciones integradas de Python para entrada, conversión, colecciones, iteración, ordenación, validación, archivos e inspección.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Logo do Python com o texto 'requests' abaixo
    Bibliotecas y Módulos
    Foto de perfil de Leandro Hirt da Academify

    Requests en Python: guía completa para principiantes

    Aprende Requests en Python: instalación, GET, POST, parámetros, cabeceras, JSON, sesiones, timeouts y manejo de errores.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Manipulação de datas e calendário em Python
    Bibliotecas y Módulos
    Foto de perfil de Leandro Hirt da Academify

    datetime en Python: trabajar con fechas y horas

    Aprende datetime en Python: crea, analiza, formatea y compara fechas, usa timedelta, UTC, zoneinfo y objetos con zona horaria.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026