Ejercicio 03 — Pide el nombre de un archivo al usuario, leelo y muestra cuantas…

Dificultad: amarillo · Módulo 08 (Clases y archivos)

Enunciado

Pide el nombre de un archivo al usuario, leelo y muestra cuantas lineas tiene.

Cómo se resuelve

Leer un archivo y contar sus líneas es el primer contacto con la entrada/salida de ficheros: el patrón central es with open(...) as f.

  1. input("Nombre del archivo: ") pide al usuario el nombre del fichero que quiere abrir.
  2. os.path.exists(nombre) comprueba si ese archivo existe antes de intentar leerlo. Si no existe, el ejercicio crea uno de prueba con with open(nombre, "w") as f y f.write(...) en un bucle, para que el programa siempre tenga algo que leer y sea autocontenido. El modo "w" (write) crea el archivo si no está y lo deja listo para escribir.
  3. with open(nombre, "r") as f: abre el archivo en modo "r" (read, lectura). La palabra clave with es la clave: crea un contexto que cierra el archivo automáticamente al salir del bloque, incluso si ocurre un error a mitad. Así nunca dejas un fichero abierto consumiendo recursos.
  4. f.readlines() lee todas las líneas de golpe y devuelve una lista donde cada elemento es una línea. len(lineas) cuenta cuántos elementos tiene esa lista, es decir, cuántas líneas hay.

Trampa habitual: abrir con open() sin with y olvidar f.close(). Si no cierras el archivo, los cambios pueden no guardarse y el fichero queda bloqueado; with te libra de acordarte porque lo cierra solo.

Para practicar — cópialo y complétalo

Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.

# Curso de Python — Modulo 08: Clases, dataclasses y archivos
# Ejercicio 03 — PRACTICA (rellena los TODO)
# Enunciado: Pide el nombre de un archivo al usuario, leelo y muestra cuantas lineas tiene.
# Dificultad: amarillo
# Ejecutar: python3 ej03_practica.py
 
import os
 
# TODO: pide al usuario el nombre del archivo con input()
nombre = None
 
# Bloque opcional: crea el archivo si no existe (para poder probar sin tener un archivo previo)
if not os.path.exists(nombre):
    with open(nombre, "w") as f:
        for i in range(1, 6):
            f.write(f"Linea de prueba {i}\n")
    print("(El archivo no existia; se creo uno de prueba con 5 lineas.)")
 
# TODO: abre el archivo en modo lectura con open() y with
# TODO: usa readlines() para obtener la lista de lineas
# TODO: imprime cuantas lineas tiene el archivo
# Salida esperada: El archivo tiene 5 lineas.

Solución — cópiala y ejecútala

# Curso de Python — Modulo 08: Clases, dataclasses y archivos
# Ejercicio 03 — MODELO (resuelto)
# Enunciado: Pide el nombre de un archivo al usuario, leelo y muestra cuantas lineas tiene.
# Dificultad: amarillo
# Ejecutar: python3 ej03_modelo.py
 
import os
 
nombre = input("Nombre del archivo: ")
 
# Verifica que el archivo existe antes de abrirlo
if not os.path.exists(nombre):
    # Crea un archivo de prueba automaticamente para que el ejercicio sea ejecutable
    with open(nombre, "w") as f:
        for i in range(1, 6):
            f.write(f"Linea de prueba {i}\n")
    print(f"(El archivo no existia; se creo uno de prueba con 5 lineas.)")
 
with open(nombre, "r") as f:
    lineas = f.readlines()
 
print(f"El archivo tiene {len(lineas)} lineas.")

Cómo usarlo

Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.

Conexiones