Está en la página 1de 17

Lectura y escritura de

archivos
Lectura y escritura de archivos
El concepto popular de “archivo” es un poco diferente en Python.

En Windows por ejemplo, un archivo puede ser un elemento manipulado, editado o creado
por el usuario o sistema operativo. Esto quiere decir que los archivos pueden ser imágenes,
documentos de texto, archivos ejecutables y muchos más.

Los archivos en Python están categorizados en archivos de texto o archivos binarios, la


diferencia entre estos es de vital importancia al momento de manipularlos.

Los archivos de texto están formados por una secuencia de líneas, donde cada línea incluye
una secuencia de caracteres. Esto es lo que se conoce como código o sintaxis.
Lectura y escritura de archivos
Cada línea finaliza con un carácter especial, llamado EOL(End of Line) o carácter de fin de
línea. Hay varios tipos de caracteres de fin de línea pero los más comunes son la coma (,) o el
carácter de salto de línea (\n).

Un archivo binario es cualquier tipo de archivo que no es un archivo de texto. A causa de su


naturaleza, los archivos binarios solo pueden ser procesados por una aplicación que conozca
o entienda la estructura del mismo. En otras palabras, deben ser aplicaciones que puedan
leer e interpretar binario.
Lectura y escritura de archivos
Hay varias formas de presentar el resultado de un programa; Los datos pueden imprimirse
en un formato legible por humanos o escribirse en un archivo para uso futuro.

La entrada y salida de ficheros (comúnmente llamada File I/O) es una herramienta que
Python, como la mayoría de los lenguajes, brinda de forma estándar. Su utilización es similar
a la del lenguaje C, aunque añade mayores características.

El primer paso para introducirnos es saber cómo abrir un determinado archivo. Para esto se
utiliza la función open, que toma como primer argumento el nombre de un archivo (fichero).

archivo = open(nombre_archivo, modo)


archivo = open("archivo.txt")
Lectura y escritura de archivos
open("archivo.txt")

Esto no significa ejecutar el programa por defecto para editar el fichero, sino cargarlo en la
memoria para poder realizar operaciones de lectura y escritura.

En caso de no especificarse la ruta completa, se utilizará la actual (donde se encuentre el


script).

Como segundo argumento, open espera el modo (como una cadena) en el que se abrirá el
fichero. Esto indica si se utilizará para lectura, escritura, ambas, entre otras.

open("archivo.txt", "r")
Lectura y escritura de archivos
open("archivo.txt", "r")

La r indica el modo lectura. Si se intentara utilizar la función write para escribir algo, se
lanzaría la excepción IOError.

Los modos de apertura de un archivo en Python son:

• r - Lectura únicamente.
• w - Escritura únicamente, reemplazando el contenido actual del archivo o bien
creándolo si es inexistente.
• a - Escritura únicamente, manteniendo el contenido actual y añadiendo los datos al
final del archivo.
• w+, r+ o a+ - Lectura y escritura.
Lectura y escritura de archivos
El signo '+' permite realizar ambas operaciones. La diferencia entre w+ y r+ consiste en que
la primera opción borra el contenido anterior antes de escribir nuevos datos, y crea el
archivo en caso de ser inexistente. a+ se comporta de manera similar, aunque añade los
datos al final del archivo.

Todas las opciones anteriores pueden combinarse con una 'b' (de binary), que consiste en
leer o escribir datos binarios. Esta opción es válida únicamente en sistemas Microsoft
Windows, que hacen una distinción entre archivos de texto y binarios. En las demás
plataformas, es simplemente ignorada.

Ejemplos: rb, wb, ab+, rb+, wb+.

Por último, open() retorna una instancia de la clase file, desde la cual se podrán ejecutar
diversas operaciones.

f = open("archivo.txt", "w")
Lectura y escritura de archivos
f = open("archivo.txt", "w")

En este ejemplo se ha abierto el fichero archivo.txt que, en caso de no existir, será


automáticamente creado en el directorio actual.

La escritura de datos en el fichero se realiza utilizando la función file.write.

f.write("Esto es un texto.")

Reiteradas llamadas a esta función añaden texto al archivo hasta que sea cerrado.

f.write("Esta es una línea.\n")


f.write("Esta es la segunda línea.\n")

El carácter '\n’ es utilizado para indicar el salto de línea.


Lectura y escritura de archivos
Posterior a los procesos de apertura y escritura de archivos, es necesario cerrar el archivo,
para esto, se emplea la función file.close.

f.close()
Lectura y escritura de archivos
Con respecto a la lectura de datos desde un archivo, las tres funciones disponibles son read,
readline y readlines.

f = open("archivo.txt", "r")
contenido = f.read()
print(contenido)
f.close()

Imprime:

Esta es una línea.


Esta es la segunda línea.

Una segunda llamada a f.read() retornaría una cadena vacía, debido a que ya se ha obtenido
todo el contenido.
Lectura y escritura de archivos
La función readline realiza la lectura línea por línea, retornando sólo la línea actual.

print(f.readline())
print(f.readline())

Imprime:

Esta es una línea.

Esta es la segunda línea.

En este caso, se incluye el carácter de nueva línea al final de la cadena retornada.


Lectura y escritura de archivos
La función readlines realiza la lectura de todas las líneas en el archivo, retornando una lista
en donde cada línea será un elemento de la lista.

print(f.readlines())

Imprime:

['Esta es una línea.\n', 'Esta es la segunda línea.\n']

Para iterar entre todas las líneas de un archivo, se presentan dos opciones similares:

for línea in f.readlines():


print(línea)

for línea in f:
print(línea)
Lectura y escritura de archivos
El llamado a las funciones read, readline y readlines realiza un desplazamiento de posición
entre las líneas del fichero.

La función file.seek permite posicionarse en un determinado lugar del fichero.

Ejemplo:

f.seek(10)
print(f.read())

Comienza a leer desde la posición 10, por lo que imprime:

a línea.
Esta es la segunda línea.
Lectura y escritura de archivos
A partir de Python 2.5 se puede utilizar with para asegurar que el archivo sea cerrado al
finalizar su utilización, incluso si se produce un error.

with open("archivo.txt", "r") as f:


contenido = f.read()
print(f.closed) # True

Lo que es equivalente a:

try:
f = open("archivo.txt", "r")
content = f.read()
finally:
f.close()
Lectura y escritura de archivos
Al utilizar la función open(), esta retorna un objeto file. Los objetos file contienen métodos
y atributos que se usan para recolectar información sobre el archivo que se acaba de abrir,
así como también para manipular dicho archivo.

El atributo mode de un objeto file permite saber el modo en que fue abierto un archivo.
El atributo name contiene el nombre del archivo abierto en el objeto file.
El atributo closed retorna True si el archivo está cerrado, si no, False.

Llamar f.write sin usar with o llamar f.close() puede dar como resultado que los argumentos
f.write no se escriban completamente en el disco, incluso si el programa se cierra
correctamente.

Una vez que se cierra un objeto de archivo, ya sea mediante una with declaración o mediante
una llamada f.close(), los intentos de utilizar el objeto de archivo generarán una excepción.
Lectura y escritura de archivos
1. Escribir una función que solicite un número entero entre 1 y 9 y guarde en un fichero con
el nombre tabla-n.txt la tabla de multiplicar de ese número, donde n es el número
introducido.

2. Escribir una función que pida dos números n y m entre 1 y 9, lea el fichero tabla-n.txt con
la tabla de multiplicar de ese número, y muestre en pantalla la línea m del fichero. Si el
fichero no existe debe mostrar un mensaje por pantalla informándolo.

También podría gustarte