24. Abrir archivos

 

24. Abrir Archivos con Python: Tutorial para Principiantes

📂 Introducción: Tu asistente organizador de archivos

¡Ahora tu asistente puede abrir archivos y programas con solo escuchar tu voz! Imagina poder decir "tareas" y que se abra automáticamente tu lista de tareas, o decir "juego" y que se lance tu videojuego favorito. Es como tener un mayordomo digital para tu computadora.

Analoǵía: Tu asistente será como un control remoto universal:

  • Cada comando = Un botón diferente

  • Cada archivo = Un canal diferente

  • Tu voz = El control remoto


🖥️ ¿Cómo funciona? Esquema visual

text

🎤 TÚ: "abre tareas"

     ↓

🤖 ASISTENTE: Detecta palabra "tareas"

     ↓

🗂️ OS.SYSTEM: Busca el archivo "tareas.txt"

     ↓

🚀 OS.STARTFILE: Lanza el programa asociado

     ↓

📝 RESULTADO: Bloc de notas se abre con tu archivo


🛠️ Lo que necesitaremos

Librería: os (Operating System)

  • ¡Ya viene con Python! No necesitas instalarla

  • Permite interactuar con el sistema operativo

  • Es como un "control remoto" para tu computadora

python

import os  # ← ¡Incluido en todas las instalaciones de Python!

¿Qué puede hacer os?

  • Abrir archivos y programas

  • Crear y eliminar carpetas

  • Navegar entre directorios

  • Ver información del sistema


✍️ Código paso a paso explicado

Paso 1: Importar la librería

python

import os

Piensa en os como: El asistente personal de tu asistente. Le da "superpoderes" para controlar tu computadora.


Paso 2: Detectar cuando queremos abrir algo

python

# En tu función principal:

if 'abre' in comando or 'abrir' in comando:

    abrir_archivo(comando)

También puedes hacerlo específico:

python

if 'tareas' in comando:

    abrir_tareas()

elif 'musica' in comando:

    abrir_musica()

elif 'juego' in comando:

    abrir_juego()


Paso 3: Entender las rutas de archivos

¿Qué es una ruta? Es la "dirección" de un archivo en tu computadora:

text

C:/Users/TuNombre/Desktop/tareas.txt

│    │     │         │         │

│    │     │         │         └── Nombre del archivo + extensión

│    │     │         └───────────── Carpeta (Escritorio)

│    │     └─────────────────────── Tu usuario

│    └───────────────────────────── Carpeta de usuarios

└────────────────────────────────── Disco principal

Tipos de rutas:

python

# Ruta absoluta (dirección completa)

ruta_completa = "C:/Users/Juan/Desktop/tareas.txt"


# Ruta relativa (desde donde está el script)

ruta_relativa = "./tareas.txt"  # Busca en la misma carpeta


# Ruta especial del sistema

ruta_escritorio = os.path.join(os.path.expanduser("~"), "Desktop")


Paso 4: Función básica para abrir archivos

python

def abrir_tareas():

    """

    Abre el archivo de tareas en el programa predeterminado

    """

    # 1. Informar al usuario

    hablar("Abriendo bloc de notas...")

    

    # 2. Definir la ruta del archivo

    ruta_tareas = "C:/Users/TuNombre/Desktop/tareas.txt"

    

    # 3. Verificar si el archivo existe

    if os.path.exists(ruta_tareas):

        # 4. Abrir el archivo

        os.startfile(ruta_tareas)

        hablar("Archivo de tareas abierto")

    else:

        # 5. Si no existe, crearlo

        hablar("Creando nuevo archivo de tareas...")

        with open(ruta_tareas, 'w') as f:

            f.write("Lista de tareas:\n1. \n2. \n3. ")

        os.startfile(ruta_tareas)

        hablar("Archivo de tareas creado y abierto")


🚀 Métodos diferentes para abrir archivos

Opción 1: os.startfile() (Recomendada para Windows)

python

# Abre con el programa predeterminado

os.startfile("C:/Users/TuNombre/Desktop/tareas.txt")

# Si es .txt → Abre Bloc de notas

# Si es .mp3 → Abre reproductor de música

# Si es .jpg → Abre visor de imágenes

Opción 2: os.system() (Funciona en todos los sistemas)

python

# Windows - Abrir con programa específico

os.system('notepad.exe C:/Users/TuNombre/Desktop/tareas.txt')


# Mac - Abrir con TextEdit

os.system('open /Users/TuNombre/Desktop/tareas.txt')


# Linux - Abrir con gedit

os.system('gedit /home/TuNombre/Desktop/tareas.txt')

Opción 3: subprocess.run() (Más control)

python

import subprocess


# Abrir con control avanzado

subprocess.run(['notepad.exe', 'C:/Users/TuNombre/Desktop/tareas.txt'])


🎯 Código completo mejorado

python

# ASISTENTE VIRTUAL - ABRIR ARCHIVOS

import os

import pyttsx3


# Configuración de voz

engine = pyttsx3.init()


def hablar(texto):

    engine.say(texto)

    engine.runAndWait()


def obtener_ruta_escritorio():

    """

    Obtiene la ruta del escritorio automáticamente

    Funciona en Windows, Mac y Linux

    """

    # Obtener carpeta de usuario

    usuario = os.path.expanduser("~")

    

    # Crear ruta al escritorio

    escritorio = os.path.join(usuario, "Desktop")

    

    # Verificar si existe, si no, usar alternativas

    if not os.path.exists(escritorio):

        escritorio = os.path.join(usuario, "Escritorio")  # Español

        if not os.path.exists(escritorio):

            escritorio = usuario  # Usar carpeta de usuario si no hay escritorio

    

    return escritorio


def abrir_archivo_general(comando):

    """

    Abre archivos según lo que diga el usuario

    """

    comando_lower = comando.lower()

    

    # Diccionario de archivos/programas

    archivos = {

        "tareas": {

            "nombre": "lista_tareas.txt",

            "ruta": os.path.join(obtener_ruta_escritorio(), "lista_tareas.txt"),

            "mensaje": "Abriendo lista de tareas"

        },

        "notas": {

            "nombre": "notas_rapidas.txt",

            "ruta": os.path.join(obtener_ruta_escritorio(), "notas_rapidas.txt"),

            "mensaje": "Abriendo bloc de notas"

        },

        "musica": {

            "nombre": "mi_musica.mp3",

            "ruta": os.path.join(obtener_ruta_escritorio(), "Musica", "mi_cancion.mp3"),

            "mensaje": "Reproduciendo música"

        },

        "chrome": {

            "nombre": "Google Chrome",

            "ruta": "C:/Program Files/Google/Chrome/Application/chrome.exe",

            "mensaje": "Abriendo navegador"

        },

        "calculadora": {

            "nombre": "Calculadora",

            "ruta": "calc.exe",  # Programa del sistema

            "mensaje": "Abriendo calculadora"

        }

    }

    

    # Buscar qué quiere abrir el usuario

    for clave, info in archivos.items():

        if clave in comando_lower:

            hablar(info["mensaje"])

            

            # Verificar si existe el archivo/programa

            if os.path.exists(info["ruta"]):

                try:

                    os.startfile(info["ruta"])

                    return True

                except Exception as e:

                    hablar(f"No pude abrir {info['nombre']}")

                    print(f"Error: {e}")

                    return False

            else:

                # Si no existe, preguntar si crear uno nuevo (solo para archivos de texto)

                if info["nombre"].endswith(".txt"):

                    hablar(f"No encontré {info['nombre']}. ¿Quieres que lo cree?")

                    respuesta = escuchar().lower()

                    

                    if "sí" in respuesta or "si" in respuesta:

                        # Crear archivo con contenido básico

                        with open(info["ruta"], 'w', encoding='utf-8') as f:

                            if "tareas" in clave:

                                f.write("📝 LISTA DE TAREAS\n\n1. \n2. \n3. \n")

                            elif "notas" in clave:

                                f.write("📓 NOTAS RÁPIDAS\n\nFecha: \n\n")

                        

                        os.startfile(info["ruta"])

                        hablar(f"Archivo {info['nombre']} creado y abierto")

                        return True

                else:

                    hablar(f"No encontré {info['nombre']} en la ruta esperada")

                    return False

    

    # Si no reconoce el comando

    hablar("No sé qué quieres abrir. Prueba con: tareas, notas, música")

    return False


def crear_acceso_rapido():

    """

    Crea archivos de acceso rápido en el escritorio

    """

    escritorio = obtener_ruta_escritorio()

    

    # Archivos básicos que se pueden crear

    archivos_base = {

        "tareas_rapidas.txt": "✅ LISTA DE TAREAS\n\n1. \n2. \n3. \n\n💡 Escribe tus tareas aquí",

        "notas_diarias.txt": "📓 DIARIO\n\nFecha: \n\nHoy quiero recordar:\n\n",

        "ideas_proyectos.txt": "💡 IDEAS Y PROYECTOS\n\n1. \n2. \n3. \n"

    }

    

    for nombre, contenido in archivos_base.items():

        ruta = os.path.join(escritorio, nombre)

        if not os.path.exists(ruta):

            with open(ruta, 'w', encoding='utf-8') as f:

                f.write(contenido)

    

    hablar("He creado archivos básicos en tu escritorio")


def abrir_carpeta_especifica(nombre_carpeta):

    """

    Abre una carpeta específica en el explorador de archivos

    """

    carpetas_comunes = {

        "escritorio": obtener_ruta_escritorio(),

        "documentos": os.path.join(os.path.expanduser("~"), "Documents"),

        "descargas": os.path.join(os.path.expanduser("~"), "Downloads"),

        "imágenes": os.path.join(os.path.expanduser("~"), "Pictures"),

        "música": os.path.join(os.path.expanduser("~"), "Music"),

        "videos": os.path.join(os.path.expanduser("~"), "Videos")

    }

    

    if nombre_carpeta in carpetas_comunes:

        ruta = carpetas_comunes[nombre_carpeta]

        if os.path.exists(ruta):

            hablar(f"Abriendo carpeta de {nombre_carpeta}")

            os.startfile(ruta)

        else:

            hablar(f"No encontré la carpeta de {nombre_carpeta}")

    else:

        hablar(f"No reconozco la carpeta {nombre_carpeta}")


# Diagrama visual del proceso:

"""

🎤 TÚ DICES: "abre tareas"

     ↓

🤖 ASISTENTE: Detecta "tareas" en el comando

     ↓

🗂️ BUSCA: En diccionario → ruta del archivo tareas.txt

     ↓

🔍 VERIFICA: ¿Existe el archivo?

     ↓

✅ SI EXISTE: os.startfile(ruta) → Se abre

     ↓

❌ SI NO EXISTE: "¿Crear nuevo archivo?"

     ↓

👂 ESCUCHA: Si dice "sí" → Crea archivo y lo abre

     ↓

📝 RESULTADO: Bloc de notas con tu lista de tareas

"""


🎮 Ejemplo: Abrir programas instalados

python

def abrir_programas_comunes():

    """

    Abre programas comunes según el sistema operativo

    """

    programas = {

        "navegador": {

            "windows": "C:/Program Files/Google/Chrome/Application/chrome.exe",

            "mac": "/Applications/Google Chrome.app",

            "linux": "google-chrome"

        },

        "reproductor": {

            "windows": "C:/Program Files/Windows Media Player/wmplayer.exe",

            "mac": "/Applications/QuickTime Player.app",

            "linux": "vlc"

        },

        "editor texto": {

            "windows": "notepad.exe",

            "mac": "open -a TextEdit",

            "linux": "gedit"

        }

    }

    

    # Detectar sistema operativo

    import platform

    sistema = platform.system().lower()  # 'windows', 'darwin' (mac), 'linux'

    

    return programas, sistema


🚨 Solución de problemas comunes

Problema 1: "FileNotFoundError"

python

# El archivo no existe en esa ruta

# Solución: Verificar la ruta correctamente


# Forma segura de verificar:

ruta = "C:/Users/TuNombre/Desktop/tareas.txt"

if os.path.exists(ruta):

    os.startfile(ruta)

else:

    hablar(f"No encontré el archivo en: {ruta}")

Problema 2: Permisos denegados

python

# Algunas carpetas requieren permisos administrativos

# Solución: Mover archivos a carpetas de usuario


# Usar carpeta de documentos en vez de Program Files

ruta_segura = os.path.join(os.path.expanduser("~"), "Documents", "mi_archivo.txt")

Problema 3: Extensión no asociada

python

# Si el sistema no sabe qué programa usar

# Solución: Especificar el programa


# En vez de:

os.startfile("archivo.raro")


# Usar:

os.system('notepad.exe archivo.raro')  # Forzar a abrir con bloc de notas


📊 Resumen de funciones del módulo os

Función

Descripción

Ejemplo

os.startfile(ruta)

Abre archivo con programa predeterminado

os.startfile("documento.txt")

os.path.exists(ruta)

Verifica si existe un archivo/carpeta

if os.path.exists(ruta):

os.path.join()

Une partes de rutas de forma segura

os.path.join("C:", "Users", "archivo.txt")

os.system(comando)

Ejecuta comandos del sistema

os.system("notepad.exe")

os.makedirs()

Crea carpetas

os.makedirs("nueva_carpeta")


✅ Resumen clave

  1. import os da acceso al sistema operativo

  2. os.startfile(ruta) abre archivos con su programa asociado

  3. Siempre verificar si el archivo existe con os.path.exists()

  4. Usar rutas absolutas para evitar confusiones

  5. Crear archivos si no existen para mejor experiencia


📝 Cuestionario de repaso

Pregunta 1

¿Qué función usamos para abrir un archivo con su programa predeterminado?
a) os.openfile()
b) os.startfile()
c) os.launch()
d) os.execute()

Pregunta 2

¿Qué hace os.path.exists("ruta")?
a) Crea un archivo
b) Verifica si un archivo existe
c) Elimina un archivo
d) Copia un archivo

Pregunta 3

¿Por qué es importante verificar si un archivo existe antes de abrirlo?
a) Para hacer el código más lento
b) Para evitar errores si el archivo no está
c) Porque es obligatorio en Python
d) Para instalarlo automáticamente

Pregunta 4

Si quieres abrir "tareas.txt" que está en el escritorio, ¿qué ruta usarías?
a) "tareas.txt"
b) "C:/tareas.txt"
c) "C:/Users/TuNombre/Desktop/tareas.txt"
d) "Desktop/tareas.txt"

Pregunta 5

¿Qué hace os.path.join("C:", "Users", "archivo.txt")?
a) "C:/Users/archivo.txt"
b) "C:Usersarchivo.txt"
c) "C:\Users\archivo.txt"
d) Las opciones a y c son correctas


Respuestas del cuestionario

  1. b) os.startfile() - "start file" = iniciar/arrancar archivo

  2. b) Verifica si un archivo existe - Evita errores si el archivo fue movido o eliminado

  3. b) Para evitar errores si el archivo no está - Mejor experiencia de usuario

  4. c) "C:/Users/TuNombre/Desktop/tareas.txt" - Ruta absoluta completa

  5. d) Las opciones a y c son correctas - join() crea rutas correctas para el sistema


🎁 Reto final: Personaliza tu asistente de archivos

Desafío 1: Buscador inteligente

python

def buscar_y_abrir(nombre_archivo):

    """Busca un archivo en todo el sistema y lo abre"""

    import fnmatch

    

    # Buscar en carpetas comunes

    carpetas = ["Desktop", "Documents", "Downloads"]

    for carpeta in carpetas:

        ruta = os.path.join(os.path.expanduser("~"), carpeta)

        for archivo in os.listdir(ruta):

            if fnmatch.fnmatch(archivo.lower(), f"*{nombre_archivo.lower()}*"):

                os.startfile(os.path.join(ruta, archivo))

                return True

    return False

Desafío 2: Organizador automático

python

def organizar_descargas():

    """Organiza archivos de descargas por tipo"""

    descargas = os.path.join(os.path.expanduser("~"), "Downloads")

    

    # Crear carpetas por tipo

    tipos = {

        "Imagenes": [".jpg", ".png", ".gif"],

        "Documentos": [".pdf", ".doc", ".txt"],

        "Musica": [".mp3", ".wav"],

        "Videos": [".mp4", ".avi"]

    }

    

    for archivo in os.listdir(descargas):

        for carpeta, extensiones in tipos.items():

            if any(archivo.endswith(ext) for ext in extensiones):

                # Mover archivo a carpeta correspondiente

                origen = os.path.join(descargas, archivo)

                destino_dir = os.path.join(descargas, carpeta)

                os.makedirs(destino_dir, exist_ok=True)

                destino = os.path.join(destino_dir, archivo)

                os.rename(origen, destino)

Desafío 3: Lanzador de aplicaciones

python

def crear_lanzador_rapido():

    """Crea un menú de aplicaciones favoritas"""

    favoritos = {

        "navegador": "chrome.exe",

        "editor": "code.exe",  # VS Code

        "musica": "spotify.exe",

        "juego": "minecraft.exe"

    }

    

    hablar("Mis aplicaciones favoritas:")

    for nombre, programa in favoritos.items():

        print(f"• {nombre}: {programa}")

    

    hablar("Di el nombre de la aplicación que quieres abrir")


🎉 ¡Felicidades!

Ahora tu asistente puede:

  • ✅ Abrir archivos con programas predeterminados

  • ✅ Crear archivos nuevos si no existen

  • ✅ Abrir carpetas del sistema

  • ✅ Lanzar programas instalados

  • ✅ Manejar rutas de forma segura

Próximo paso: Agregar búsqueda de archivos, organización automática, o sincronización con la nube. ¡Tu asistente organizador está listo para trabajar



https://www.youtube.com/watch?v=Pj9KbAKpQyk

https://www.youtube.com/watch?v=-0tIy8wWtzE

https://www.youtube.com/watch?v=YqSSId7xfwU

https://www.youtube.com/watch?v=MjK-j7YJ5YI


https://www.youtube.com/watch?v=l2G8-iQYfoA



https://www.youtube.com/watch?v=t-YO0XeHczU


Comentarios

Entradas más populares de este blog

1-7. Transforma tu audio a texto

10. Haz que tu asistente hable

8. NUEVO - Solución si tu micrófono no está captando tu audio