Lectura y Escritura de Archivos en Python

PythonBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá el proceso fundamental de leer y escribir en archivos en Python. La E/S (Entrada/Salida) de archivos es una habilidad crucial para cualquier programador, ya que permite que sus programas persistan datos, lean configuraciones e interactúen con el sistema de archivos.

Nos centraremos en el uso de la declaración with, que es la forma moderna y recomendada de manejar archivos en Python. Garantiza que los archivos se cierren automáticamente incluso si ocurren errores, previniendo fugas de recursos.

A lo largo de este laboratorio, usted:

  • Comprenderá el proceso básico de E/S de archivos.
  • Abrirá y leerá archivos utilizando diferentes métodos (read(), readlines() e iteración).
  • Escribirá contenido nuevo en archivos y añadirá contenido a archivos existentes.

Todas las operaciones se realizarán dentro del LabEx WebIDE. Empecemos.

El Proceso de Lectura y Escritura de Archivos

En este paso, aprenderás sobre el proceso básico de E/S (Entrada/Salida) de archivos en Python y por qué la declaración with es esencial.

Para leer o escribir en un archivo en Python, generalmente sigues tres pasos:

  1. Abrir el archivo.
  2. Leer o escribir en el archivo.
  3. Cerrar el archivo.

Gestionar manualmente el cierre de un archivo puede ser propenso a errores. Si tu programa encuentra un error mientras el archivo está abierto, es posible que no se cierre correctamente. Para solucionar esto, Python proporciona la declaración with. Esta gestiona automáticamente el cierre del archivo por ti, incluso si ocurren excepciones, asegurando que los recursos del sistema se administren correctamente.

Nota: Si no estás familiarizado con el uso de WebIDE (similar a VS Code), por favor, apréndelo primero en este laboratorio.

La sintaxis básica es:

with open('filename.txt', 'mode') as file_variable:
    ## Perform operations on the file
  • open(): La función incorporada (built-in) para abrir un archivo.
  • 'filename.txt': La ruta al archivo.
  • 'mode': Un carácter que indica cómo se utilizará el archivo (por ejemplo, 'r' para lectura, 'w' para escritura).
  • file_variable: La variable que usarás para interactuar con el objeto de archivo.

Este paso es puramente conceptual. En los siguientes pasos, aplicarás este conocimiento para realizar operaciones de archivo reales.

Abrir y Leer Archivos

En este paso, aprenderá cómo abrir y leer archivos utilizando la función open(). Cubriremos la lectura del archivo completo, la lectura línea por línea en una lista y la iteración sobre las líneas, lo cual es muy eficiente para archivos grandes.

El script de configuración ya ha creado dos archivos para usted: hi.txt y sonnet29.txt.

Lectura de un Archivo Completo con read()

El método read() lee el contenido completo de un archivo en una única cadena (string).

  1. En el explorador de archivos de la izquierda, abra el archivo read_file.py.
  2. Agregue el siguiente código. Este script abre hi.txt, lee su contenido e imprime el resultado en la consola.
## Read file using 'with' statement: automatically closes file when done
with open('/home/labex/project/hi.txt') as hello_file:
    hello_content = hello_file.read()  ## Read entire file content

print(hello_content)
  1. Para ejecutar el script, abra una terminal y ejecute el siguiente comando:
python3 read_file.py

Debería ver el contenido de hi.txt impreso.

Hello World!

Lectura de un Archivo en una Lista de Líneas con readlines()

El método readlines() lee todas las líneas de un archivo y las devuelve como una lista de cadenas. Cada cadena en la lista representa una línea e incluye el carácter de nueva línea (\n) al final.

  1. Modifique read_file.py con el siguiente código para leer sonnet29.txt.
## readlines() method: returns list of strings, one per line
with open('/home/labex/project/sonnet29.txt') as sonnet_file:
    lines = sonnet_file.readlines()  ## Returns list with each line as a string

print(lines)
  1. Ejecute el script nuevamente:
python3 read_file.py

La salida será una lista de cadenas, donde cada cadena es una línea del archivo.

['When, in disgrace with fortune and men\'s eyes,\n', 'I all alone beweep my outcast state,\n', 'And trouble deaf heaven with my bootless cries,\n', 'And look upon myself and curse my fate,\n']

Iteración a Través de un Archivo Línea por Línea

Para archivos grandes, leer el contenido completo en memoria puede ser ineficiente. Un mejor enfoque es iterar directamente sobre el objeto de archivo. Esto lee el archivo línea por línea sin cargar el archivo completo en la memoria.

  1. Modifique read_file.py por última vez con el siguiente código.
## Iterate through file line by line (memory efficient for large files)
with open('/home/labex/project/sonnet29.txt') as sonnet_file:
    for line in sonnet_file:  ## File object is iterable
        print(line, end='')  ## Print without extra newline

Nota: Usamos end='' en la función print() para evitar añadir una nueva línea extra, ya que cada line del archivo ya termina con una.

  1. Ejecute el script:
python3 read_file.py

Esto imprimirá el contenido del archivo, perfectamente formateado.

When, in disgrace with fortune and men's eyes,
I all alone beweep my outcast state,
And trouble deaf heaven with my bootless cries,
And look upon myself and curse my fate,

Escribir en Archivos

En este paso, explorará cómo escribir datos en archivos. Cubriremos dos modos diferentes: modo escritura ('w'), que sobrescribe cualquier contenido existente, y modo adjuntar (append) ('a'), que añade nuevos datos al final de un archivo.

Escritura en un Archivo con Modo 'w'

Cuando abre un archivo en modo escritura ('w'), se crea un nuevo archivo si no existe. Si el archivo ya existe, todo su contenido se borra antes de escribir el nuevo contenido.

  1. En el explorador de archivos, abra el archivo write_file.py.
  2. Agregue el siguiente código. Este script creará un archivo llamado bacon.txt y escribirá una sola línea de texto en él. El método write() devuelve el número de caracteres escritos.
## Write to file: 'w' mode overwrites existing file
with open('/home/labex/project/bacon.txt', 'w') as bacon_file:  ## 'w' = write mode
    chars_written = bacon_file.write('Hello world!\n')  ## Returns number of characters written

print(chars_written)
  1. Ejecute el script desde la terminal:
python3 write_file.py

La salida muestra el número de caracteres escritos en el archivo.

13

Ahora puede ver un nuevo archivo, bacon.txt, en su explorador de archivos.

Adjuntar a un Archivo con Modo 'a'

El modo adjuntar ('a') se utiliza para añadir datos al final de un archivo existente sin borrar su contenido actual. Si el archivo no existe, se creará.

  1. Modifique write_file.py para adjuntar otra línea a bacon.txt.
## Append to file: 'a' mode appends to existing file
with open('/home/labex/project/bacon.txt', 'a') as bacon_file:  ## 'a' = append mode
    chars_written = bacon_file.write('Bacon is not a vegetable.')

print(chars_written)
  1. Ejecute el script nuevamente:
python3 write_file.py

La salida muestra el número de caracteres de la nueva cadena.

25

Verificación del Contenido Final

Para confirmar que tanto la operación de escritura como la de adjuntar funcionaron correctamente, leamos el contenido de bacon.txt.

  1. Modifique write_file.py por última vez para leer e imprimir el contenido de bacon.txt.
with open('/home/labex/project/bacon.txt') as bacon_file:
    content = bacon_file.read()

print(content)
  1. Ejecute el script:
python3 write_file.py

La salida debería mostrar el contenido combinado de ambas operaciones (escritura y adjuntar).

Hello world!
Bacon is not a vegetable.

Resumen

¡Felicidades por completar este laboratorio sobre lectura y escritura de archivos en Python!

En este laboratorio, ha aprendido las habilidades esenciales para la E/S (Entrada/Salida) de archivos. Comenzó comprendiendo la importancia de la declaración with para el manejo seguro y automático de archivos.

Luego practicó varias formas de leer archivos:

  • read() para obtener el contenido completo como una única cadena (string).
  • readlines() para obtener una lista de todas las líneas.
  • Iterar directamente sobre el objeto de archivo para una forma eficiente en memoria de procesar archivos grandes línea por línea.

Finalmente, exploró cómo escribir en archivos:

  • Usando el modo escritura ('w') para crear un nuevo archivo o sobrescribir uno existente.
  • Usando el modo adjuntar ('a') para añadir contenido al final de un archivo sin borrar sus datos previos.

Estas operaciones fundamentales son los bloques de construcción para aplicaciones más complejas que necesitan almacenar datos, leer configuraciones o procesar archivos de texto.