0% encontró este documento útil (0 votos)
5 vistas3 páginas

introProgPython t07

El documento explica cómo manejar ficheros de texto en programación, incluyendo la escritura, lectura y adición de datos. Se detallan pasos para abrir, escribir y cerrar ficheros, así como la importancia de la codificación y el manejo de errores. Además, se proponen ejercicios prácticos para aplicar estos conceptos en Python.

Cargado por

yoannasedeno81
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas3 páginas

introProgPython t07

El documento explica cómo manejar ficheros de texto en programación, incluyendo la escritura, lectura y adición de datos. Se detallan pasos para abrir, escribir y cerrar ficheros, así como la importancia de la codificación y el manejo de errores. Además, se proponen ejercicios prácticos para aplicar estos conceptos en Python.

Cargado por

yoannasedeno81
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

7.

Ficheros de texto
Los ficheros de texto son una forma muy sencilla de guardar información para poder recuperarla
posteriormente. En el “mundo profesional” es más habitual emplear bases de datos para guardar la
información, pero en nuestros programas de principiantes, nos bastará con emplear ficheros
convencionales.

7.1. Escritura en un fichero de texto


Para manejar un fichero, tendremos que dar siempre tres pasos.

• El primer paso será abrirlo (indicando si es para escribir en él o para leer de él).

• Luego guardaremos información (o la leeremos).

• Finalmente deberemos cerrarlo, para asegurarnos de que esa información se vuelque realmente
a fichero.

Si olvidamos cerrar, es muy habitual que tengamos un fichero que no quede utilizable, un fichero con
tamaño cero bytes, al que no se habrá llegado a volcar la información.

Así, un ejemplo sencillo que escriba un cierto texto en un fichero podría ser:

fichero = open("[Link]", "w")


[Link]("hola");
[Link]()

La orden “open” es la que se encarga de abrir el fichero. Debe recibir dos detalles: el nombre del fichero
y el modo de apertura, que en nuestro caso es “w” (que es la abreviatura de “write”, modo de escritura).

Después empleamos la orden “write”, que es la que se encarga de volcar la información a fichero.

Finalmente, cerramos el fichero.

Si escribimos más datos con “write”, todos ellos se mandarán a la misma línea. Si no es eso lo que
deseamos, terminaremos cada línea con el carácter especial “\n”, que representa un salto de línea:

fichero = open("[Link]", "w")


[Link]("1\n2\n")
[Link]("3")
[Link]("4\n")
[Link]("5")
[Link]()

Si miramos el contenido de ese fichero “[Link]”, veríamos lo siguiente:

1
2
34
5

Ejercicio propuesto 7.1.1: Crea un fichero “[Link]”, que contenga los números primos que hay entre
el 1 y el 100, cada uno en una línea distinta.

7.2. Lectura de un fichero de texto


Una primera forma de leer el contenido de un fichero, obteniendo una línea cada vez y mostrándola en
pantalla, es emplear “readline”, así:

fichero = open("[Link]", "r")


linea = [Link]()
while linea:

Introducción a la programación (con Python), por Nacho Cabanes v0.03, página 55


print(linea)
linea = [Link]()
[Link]()

En este caso, empleamos el modo “r” (como abreviatura de “read”) para indicar que queremos abrir el
fichero para leer de él.

Eso sí, ese “readline” tiene un problema: conserva los saltos de línea (“”), cosa que normalmente no es
deseable. Por eso, nos interesará usar “rstrip” para eliminar eso saltos de línea finales, ya sea al leer cada
línea o al mostrarla:

fichero = open("[Link]", "r")


linea = [Link]().rstrip()
while linea:
print(linea)
linea = [Link]().rstrip()
[Link]()

Ejercicio propuesto 7.2.1: Crea un programa que muestre en pantalla el contenido del fichero
“[Link]”.

7.3. Añadir a un fichero existente


El modo de escritura (“w”) crea el fichero, y destruye su contenido anterior en caso de que el fichero ya
existiera. Si no queremos que ocurra eso, sino que se añada a continuación de los datos que ya tenía,
deberemos usar el modo “a” (abreviatura de “append”, añadir):

fichero = open("[Link]", "a")


[Link]("una línea más\n")
[Link]()

Ejercicio propuesto 7.3.1: Crea un programa que, cada vez que se lance, pregunte al usuario una frase, y la
añada al final de un fichero llamado “[Link]”.

7.4. Codificación de un fichero. Autocierre


Existen distintas “codificaciones”, distintas formas de volcar a ficheros los caracteres internacionales,
como la eñe o las vocales acentuadas. La más habitual hoy en día es la conocida como UTF-8, que es
compatible entre distintos sistemas operativos. Podemos asegurarnos de que un fichero se guarde con
una cierta codificación si lo indicamos como tercer parámetro de la orden “open”:

fichero = open("[Link]", "w", encoding="utf-8")


[Link]("eñe u y demás\n")
[Link]()

Pero existe otra nomenclatura más compacta, que nos permite despreocuparnos de cerrar el fichero. Se
trata de usar la palabra “with” en el momento de abrir, así:

with open("[Link]", "w", encoding="utf-8") as f:


[Link]("eñe u y demás\n")

Ejercicio propuesto 7.4.1: Crea una variante del ejercicio 7.3.1, en la que se emplee “with” y se garantice que se
usa la codificación UTF-8.

7.5. Guardar una lista a fichero y recuperarla


Es muy frecuente que nos interese volcar toda una lista a fichero y viceversa. En el caso de guardar,
usaremos una estructura como la anterior, pero recorriendo los datos que forman la lista con un “for”:

lista = ["Hola", "Esto es una línea", "Otra línea más"]

Introducción a la programación (con Python), por Nacho Cabanes v0.03, página 56


with open("[Link]", "w", encoding="utf-8") as f:
for linea in lista:
[Link](linea + "\n")

Para leer el contenido de todo el fichero y volcarlo a una lista, tenemos un “readlines”, que lee todas las
líneas a la vez, pero debemos tener en cuenta que se quedará un “” al final de cada dato que se guarda
en la lista:

with open("[Link]", "r", encoding="utf-8") as f:


lineas = [Link]()

Para eliminar esos saltos de línea finales, podríamos hacerlo a la hora de utilizar cada dato, o bien volcar
a una nueva lista. La forma más compacta ese rellenar esa lista usando “for”, así:

lista = [[Link]() for linea in lineas]

Otra alternativa, para no tener dos listas en memoria con casi la misma información, es procesar todas
las líneas del fichero con “for” e “in”, por ejemplo así:

datos = []
with open("[Link]", "r", encoding="utf-8") as f:
for linea in f:
[Link]( [Link]() )

Ejercicio propuesto 7.5.1: Crea un programa que permita anotar refranes o ver todos ellos. Mostrará un menú
que permita repetir estas opciones hasta que se escoja salir del programa. Los refranes se guardarán en una
lista. Al salir del programa, los datos se guardarán a un fichero llamado “[Link]”.

7.6. Control de errores en ficheros


Si intentamos abrir un fichero que no existe, el programa se interrumpirá con un error. Una primera
forma (no la mejor) de evitar este problema es comprobar si el fichero existe antes de intentar abrirlo:

import os

if [Link]("[Link]"):
with open("[Link]", "r", encoding="utf-8") as f:
lineas = [Link]()

Una alternativa más robusta es controlar las “excepciones”, lo que permitirá también interceptar errores
de escritura, como el caso de que no se pueda escribir la información porque se trate de un dispositivo
de sólo lectura. Tras la palabra “try” indicaremos la operación que queremos intentar realizar, y tras
“except” detallaremos lo que se debe hacer en caso de que se provoque una excepción (un error grave
que suponga la interrupción del programa):

try:
with open("[Link]", "r", encoding="utf-8") as f:
lineas = [Link]()
except FileNotFoundError:
print("El fichero no existe")

Ejercicio propuesto 7.6.1: Crea un programa que permita anotar refranes, ver todos ellos o modificar uno.
Mostrará un menú que permita repetir estas opciones hasta que se escoja salir del programa. Los refranes se
guardarán en una lista. Cada vez que haya un cambio (dato nuevo o modificación), los datos se guardarán a
un fichero llamado “[Link]”. Cuando comienza la ejecución, se cargarán los refranes que se hubieran
introducido en sesiones anteriores.

Introducción a la programación (con Python), por Nacho Cabanes v0.03, página 57

También podría gustarte