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