Es muy habitual trabajar con ficheros de texto en Python. Los utilizaremos como sistema de persistencia de datos, para guardar datos y para recuperarlos luego.
En este post vamos a ver cómo realizar las funciones básicas con ficheros de texto: leer, escribir y añadir datos.
Abrir un fichero de texto
Lo primero que tenemos que hacer para trabajar con un fichero de texto es abrirlo y cargar sus datos. La función open() abre un archivo y devuelve un objeto para leer y escribir en el fichero.
La sintaxis básica de la función es la siguiente:
fichero=open(ruta_fichero, modo_apertura, encoding)
El parámetro modo_apertura presenta los siguientes valores posibles:
‘r’: Solo lectura (valor por defecto)
‘w’: Solo escritura (en caso de que ya exista, lo borra).
‘a’: Appending. Escritura al final del fichero.
‘r+’: Para lectura y escritura
Te recomiendo que en el parámetro encoding lo pases con el valor «utf-8». Con esa codificación te aseguras que lees bien las eñes y las tildes.
fichero = open("Suppliers.txt",'r',encoding="utf-8")
for line in f:
print(line)
f.close()
En el código de arriba, abrimos el fichero en modo lectura, lo leemos con un bucle for línea a línea, lo imprimimos y cuando hemos acabado lo cerramos
Después de cargar los datos del fichero, tenemos que cerrarlo con el metodo close()
El modo recomendado para abrir un fichero de texto es usar with open(). La ventaja de este método es que no tenemos que preocuparnos de cerrar el fichero, la sentencia with lo hace cuando acaba de trabajar con él.
with open("Suppliers.txt") as file_object:
contenido=file_object.read()
print (contenido)
Hay que tener en cuenta que dejar un fichero sin cerrar después de trabajar con él puede ocasionar problemas serios, pudiéndose llegar a perder los datos almacenados en el mismo.
Leer un fichero de texto
Una vez hemos abierto un fichero de texto y tenemos su información en un objeto, podemos leer los datos de diversas maneras. Por ejemplo: carácter a carácter:
with open("Suppliers.txt") as file_object:
contenido=file_object.read()
for caracter in contenido:
print(carácter,end=””)
En el código anterior, con el método read() cargamos todo el texto del fichero en contenido y luego lo recorremos caracter a caracter con el bucle for. Aquí, al usar with open() no hay que preocuparse de cerrar el fichero, Python lo hace automaticamente cuando acaba de cargar los datos en contenido.
También podemos recorrer el fichero línea a línea con un bucle for:
with open("Suppliers.txt") as file_object:
for linea in file_object:
print(linea)
En este caso, permanecemos con el fichero abierto trabajando línea a línea, pintandolas por pantalla. Si el tamaño del fichero es muy grande es posible que nos veamos forzados a trabajar de este modo, ya que no tendríamos la posibilidad de guardar todo el fichero en una variable como el caso anterior, cuando leiamos caracter a caracter.
También podemos leer las líneas de un fichero directamente con el método readlines() y crearnos una lista con las líneas. Si el fichero es muy grande, podría causar problemas al intentar guardar todos los datos en una lista.
with open("Suppliers.txt") as file_object:
lineas = file_object.readlines()
for linea in lineas:
print(linea)
Escribir en un fichero de texto
Para escribir en un fichero de texto nuevo, usamos with open y el método write. Un ejemplo sería:
fichero="Planetas.txt"
with open(fichero,"w") as objetoFichero:
objetoFichero.write("Jupiter\n")
objetoFichero.write("Neptuno\n")
objetoFichero.write("Saturno\n")
De nuevo, aquí tenemos la ventaja de que con with open no hay que preocuparse de cerrar el fichero, Python lo hace automáticamente cuando acaba de trabajar con él.
Si lo que queremos es añadir datos a un fichero ya existente, sencillamente tendríamos que abrirlo con el método de apertura: «a»
fichero="Planetas.txt"
with open(fichero,"a") as objetoFichero:
objetoFichero.write("Mercurio\n")
objetoFichero.write("Venus\n")
NOTA:
Este post es parte de la colección “Python”. Puedes ver el índice de esta colección aquí.