Artículo original escrito por Jessica Wilkins
Artículo original Python Open File – How to Read a Text File Line by Line
Traducido y adaptado por Franciscomelov

En Python, hay diferentes formas de leer un archivo de texto.

En este artículo abarcaré, la función open(), los métodos  read(), readline(), readlines(), close() y la palabra clave with.

Significado de las palabras en el contexto del articulo.

open => Abrir
read => Leer
readLine => Leer linea
readLines => Leer lineas
close => cerrar
with => Con

¿Qué es la función open() en Python?

Si quieres leer un archivo de texto en Python, primero tienes que abrirlo.

Esta es la sintaxis básica de la función open():

open("nombre del archivo que quieres abrir", "modo de apertura")

Nombres de archivos y rutas correctas

Si tu archivo de texto y tu programa Python están en el mismo directorio ("carpeta") solo tienes que escribir el nombre del archivo en la función open().

open("lista_compras.txt")
.

Ejemplo de los dos archivos en el mismo directorio:

image-4

Si tu archivo de texto está en una carpeta diferente, tendrás que especificar la ruta correcta del archivo de texto.

main.py es el nombre de mi programa Python.

En este ejemplo, tengo recetas.txt  dentro de una carpeta diferente que main.py

image-6

recetas.txt está dentro de la carpeta otros

Para acceder a recetas.txt desde main.py, tienes que incluir la el nombre de esta otra carpeta y el nombre del archivo

open("otros/recetas.txt")

Si no tienes la ruta o nombre correcto, recibirás un mensaje de error:

open("recetas.txt")
Screen-Shot-2021-09-13-at-2.03.33-AM

El error nos dice: "Archivo o directorio no encontrado: 'recetas.txt' ".

Es importante saber en qué directorio estás trabajando para poder referenciar las rutas correctas.

Modos de apertura con la función open()

Hay diferentes formas de trabajar con archivos de texto, el modo por defecto es el de  modo lectura.

Podemos abrir un archivo en modo de lectura con la letra r que viene de la palabra en inglés read que sígnica leer.

open("lista_compras.txt", mode="r")

Podemos omitir mode= y solo escribir "r".

open("demo.txt", "r")

Existen otros modos de apertura como:
"w" de  "write" que significa escribir.
"a" de appending que significa añadir o anexar (al final).

En este artículo no entraré en detalle respecto a otros métodos de apertura, ya que solo nos enfocaremos en leer archivos.

Para una lista completa de los otros modos de escritura puedes leer la documentación.

Parámetros adicionales de la función open()  Python

La función open() acepta los siguientes parámetros:

  • buffering
  • encoding
  • errors
  • newline
  • closefd
  • opener

Para aprender más sobre estos parámetros adicionales, puedes leer la documentación.

¿Qué es el método readable() en Python?

Si quieres saber si un archivo se puede leer, puedes usar el método redable() (legible).
Este método devolverá verdadero True o falso False.

El siguiente ejemplo devolverá True, porque estamos en el modo lectura por defecto.

archivo = open("lista_compras.txt")
print(archivo.readable())
Screen-Shot-2021-09-13-at-3.36.37-AM

Si modifico el ejemplo con w (write = escribir), entonces el método readable() devolverá False, ya que ahora estoy en modo escritura:

archivo = open("lista_compras, "w")
print(archivo.readable())
Screen-Shot-2021-09-13-at-3.36.18-AM

¿Qué es el método read() en Python?

El método read() leerá todo el contenido de un archivo y lo devolverá como una cadena de texto, este es una buena forma de leer un archivo solo si tu archivo de texto no es muy grande.

En el siguiente ejemplo, Usare el método read() para imprimir una lista de compras del archivo lista_compras.txt:

archivo = open("lista_compras.txt")
print(archivo.read())
image-10

Este método acepta un parámetro adicional donde podemos especificar el número de caracteres a leer.

Modificando el ejemplo anterior,  podremos imprimir solo la primera palabra, añadiendo el número 5 como argumento de read()

archivo = open("lista_compras.txt")
print(archivo.read(5))
image-11

Si omitimos el argumento adicional o el número es negativo, el archivo completo será leído

¿Qué es el método close() (cerrar) en Python?

Una vez terminaste de leer un archivo, es importante cerrarlo,  de otra forma el archivo se queda abierto, lo cual puede generar problemas

Este es un ejemplo de como cerrar el archivo lista_compras.txt:

archivo = open("lista_compras.txt")
print(archivo.read(5))
archivo.close()

Como usar la palabra clave with para cerrar archivos en Python


Con as estamos diciendo como llamaremos a open("lista_compras.txt")

Una forma de asegurar que tu archivo es cerrado, es  usar la palabra clave with. Su uso es considerado una  buena práctica, porque el archivo se cierra automáticamente en lugar de tener que cerrarlo manualmente.

Aquí hay un ejemplo de como usar la palabra clave with.

with open("lista_compras.txt") as archivo:
    print(archivo.read())
archivo = open("lista_compras.txt")
print(archivo.read())
archivo.close()

Los dos códigos hacen exactamente lo mismo.

¿Qué es el método readline() (leer línea) en Python?

Este método leerá una línea del archivo y la devolverá.

En este ejemplo, tenemos un archivo con dos enunciados.

Esta es la primera linea
Esta es la segunda linea

Si usamos el método readline(), imprimirá solo la primera sentencia.

with open("prueba.txt") as archivo:
    print(archivo.readline())
image-15

El método readline() acepta un parámetro opcional donde podemos especificar el número de caracteres a leer.

Añadiendo el número 7 a readline() para leer solo y caracteres:

with open("demo.txt") as file:
    print(file.readline(7))
image-16
el espacio cuenta como un carácter

¿Qué es el método readlines() (leer líneas) en Python?

Este método devolverá una lista de todas las líneas de texto del archivo

En este ejemplo, Imprimiremos lista_compras.txt como una lista usando el método readlines()

with open("lista_compras.txt") as archivo:
    print(archivo.readlines())
image-25

Como usar un bucle for para leer cada línea de texto de un archivo en Python

Una alternativa a estos métodos, sería usa un bucle for.

En este ejemplo, podemos imprimir cada línea de texto de lista_compras.txt iterando sobre el objeto archivo.

with open("lista_compras.txt") as archivo:
    for linea in archivo:
        print(linea)
image-26

Conclusión

Si quieres leer un archivo de texto en Python, primero debes abrirlo.

open("nombre del archivo que quieres abrir", "modo de apertura")

Si tu programa Python y tu archivo de texto están en el mismo directorio ("carpeta"), solo necesitas escribir el nombre del archivo de texto.

Si tu archivo de texto y tu programa Python no están en la misma carpeta, necesitas escribir la ruta/dirección correcta.

La función open() acepta un parámetro opcional para especificar el modo de apertura, por defecto lo abre en modo lectura.

open("datos.txt", "r")

Si quieres comprobar si un archivo se puede leer, puedes usar el método readable(), que devolverá True o False.

archivo.readable()

El método read() leerá todo el archivo y lo guardará como una sola cadena de texto.

archivo.read()

Una vez terminaste de leer un archivo, es importante no olvidar cerrarlo, de lo contrario, esto podría ocasionar problemas.

archivo.close()

Una forma de asegurarse de que tu archivo es cerrado, es usando la palabra clave with.

with open("archivo.txt") as archivo:
    print(archivo.read())

El método readlines() leerá una sola línea de tu archivo de texto y la devolverá.

archivo.readline()

El método readlines() leerá y devolverá una lista con todas las líneas de texto.

archivo.readlines()

Una alternativa a los métodos anteriores, sería el uso de un bucle for.

with open("archivo.txt") as archivo:
    for linea in archivo:
        print(linea)

Espero hayas disfrutado este artículo y te deseo mucha suerte en tu camino como Pythonista.