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
✅ Resumen clave
import os da acceso al sistema operativo
os.startfile(ruta) abre archivos con su programa asociado
Siempre verificar si el archivo existe con os.path.exists()
Usar rutas absolutas para evitar confusiones
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
b) os.startfile() - "start file" = iniciar/arrancar archivo
b) Verifica si un archivo existe - Evita errores si el archivo fue movido o eliminado
b) Para evitar errores si el archivo no está - Mejor experiencia de usuario
c) "C:/Users/TuNombre/Desktop/tareas.txt" - Ruta absoluta completa
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
Publicar un comentario