Enunciado y solución de ejercicios resueltos en Python: ficheros de texto. Se incluye la descarga del código fuente completo de los ejercicios en Python. El programa pedirá al usuario unos datos y los almacenará en un fichero de texto. Leerá el contenido del fichero y lo mostrará por pantalla. Se añade captura de posibles errores al escribir y leer en el fichero.
- Ejercicio resuelto Python 1: entrada y salida con ficheros de texto.
- Descarga del fichero Python con el ejercicio resuelto.
Ejercicio resuelto Python: entrada y salida con ficheros de texto
Enunciado del ejercicio Python
Desarrolla un programa en Python que realice las siguientes acciones:
- Abra un fichero de texto en modo escritura.
- El programa debe solicitar al usuario por consola que introduzca los siguientes datos:
- Nombre.
- Primer apellido.
- Segundo apellido.
- Edad.
- El programa debe escribir los datos introducidos por el usuario en un fichero de texto (el abierto al principio del ejercicio), con el siguiente formato:
1 2 3 4 |
Nombre: Alonso Primer apellido: Lozano Segundo apellido: Lucas Edad: 48 años |
- Cerrar el fichero guardando los cambios.
- Volver a abrir el fichero, en modo lectura y mostrar su contenido por consola..
Solución del ejercicio en Python
La solución propuesta al ejercicio 1, como ejemplo de uso de entrada y salida en ficheros de texto, podría ser:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# Nombre del fichero donde se almacenará la información rutaFichero = "clientes.txt" # Nombre de los campos caNombre = "Nombre:" caApellido1 = "Apellido1:" caApellido2 = "Apellido2:" caEdad = "Edad:" # Pedimos los datos al usuario nombre = input("Introduzca el nombre: ") apellido1 = input("Introduzca el primer apellido: ") apellido2 = input("Introduzca el segundo apellido: ") edad = input("Introduzca la edad: ") # Guardamos los datos formateados (con tabulador) en una variable valorGuardar = f"{caNombre:18}{nombre}\n{caApellido1:18}{apellido1}\n{caApellido2:18}{apellido2}\n{caEdad:18}{edad}" # Guardamos los datos formateados en fichero, con apertura "a" para añadir al final del fichero # Usamos la codificación utf-8 que nos permitirá usar tildes, eñes y demás try: with open(rutaFichero, "a", encoding="utf-8") as fichero: fichero.write(valorGuardar) # Agregamos un salto de línea final fichero.write("\n") except Exception as e: print(f"Error al abrir el fichero: {e}") finally: # Cerramos el fichero fichero.close # Abrimos el fichero en modo lectura # Y mostramos su contenido try: # Método de lectura con readlines() # with open(rutaFichero, "r", encoding="utf-8") as fichero: # contenidoFichero = fichero.readlines() # Método de lectura recorriendo cada línea fichero = open(rutaFichero, mode="r", encoding="utf-8") # Recorremos cada línea del fichero y la vamos mostrando en consola print(f"El contenido del fichero {rutaFichero} es:") for linea in fichero: print(linea, end="") except Exception as e: print(f"Error al abrir el fichero: {e}") finally: # Cerramos el fichero fichero.close |
Ejemplo de ejecución del ejercicio en Python
La compilación del ejercicio 1, introduciendo los siguientes valores:
Introduzca el nombre: Patricia
Introduzca el primer apellido: Gomariz
Introduzca el segundo apellido: Pastor
Introduzca la edad: 39
Se introducen varias veces para comprobar que la información se anexa y no se reemplaza.
La aplicación Python devolverá el contenido del fichero de texto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
El contenido del fichero clientes.txt es: Nombre: Alonso Apellido1: Lozano Apellido2: Lucas Edad: 48 Nombre: Juan Apellido1: López Apellido2: Jiménez Edad: 51 Nombre: Ginés Apellido1: Gómez Apellido2: Fernández Edad: 29 Nombre: Vicente Apellido1: Oliva Apellido2: Gutiérrez Edad: 45 Nombre: Patricia Apellido1: Gomariz Apellido2: Pastor Edad: 39 |
Descarga del fichero Python con el ejercicio resuelto
En el siguiente enlace os proporcionamos la descarga del código fuente completo en Python con la solución del ejercicio propuesto: