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