馃搨 Manejo de Archivos en Python: Gu铆a Completa

Acorde贸n de los 脥ndices

脥ndice de los temas



馃搨 Open a File on the Server

馃搨 Para trabajar con archivos en Python, el primer paso es abrir el archivo. Esto se realiza utilizando la funci贸n incorporada open(). La funci贸n open() devuelve un objeto archivo, que luego se utiliza para realizar diversas operaciones como leer o escribir en el archivo.

La sintaxis b谩sica de la funci贸n open() es la siguiente:

file = open(filename, mode)

Aqu铆, filename es una cadena que especifica la ruta del archivo que deseas abrir. El argumento mode es una cadena que indica el modo de apertura del archivo. Algunos de los modos m谩s comunes son:

  • 'r': Modo de lectura (read). El archivo debe existir. Este es el modo por defecto si no se especifica ninguno.
  • 'w': Modo de escritura (write). Si el archivo existe, su contenido se sobrescribe. Si no existe, se crea un nuevo archivo.
  • 'a': Modo de a帽adir (append). Si el archivo existe, el nuevo contenido se a帽ade al final del archivo. Si no existe, se crea un nuevo archivo.
  • 'x': Modo de creaci贸n exclusiva (exclusive creation). Crea un nuevo archivo, pero falla si el archivo ya existe.
  • 'b': Modo binario. Se utiliza con otros modos (ej., 'rb' para lectura binaria, 'wb' para escritura binaria).
  • 't': Modo texto (text). Este es el modo por defecto.
  • '+': Modo de actualizaci贸n (updating). Permite tanto la lectura como la escritura. Se debe usar con otros modos (ej., 'r+', 'w+', 'a+').

Ejemplo: Abriendo un archivo en modo de lectura:

try:
    f = open("demofile.txt", "r")
    print("Archivo abierto exitosamente para lectura.")
    # Aqu铆 ir谩n las operaciones de lectura
finally:
    # Es importante cerrar el archivo despu茅s de usarlo
    if 'f' in locals() and not f.closed:
        f.close()
        print("Archivo cerrado.")

En este ejemplo, intentamos abrir un archivo llamado "demofile.txt" en modo de lectura ("r"). El bloque try...finally se utiliza para asegurar que el archivo se cierre correctamente, incluso si ocurren errores durante la operaci贸n.

Importante: Cerrar el archivo

Es crucial cerrar el archivo despu茅s de que hayas terminado de trabajar con 茅l utilizando el m茅todo close() del objeto archivo. Esto libera los recursos del sistema y asegura que los cambios realizados en el archivo se guarden correctamente.

✂️ Read Only Parts of the File

✂️ A menudo, no necesitas leer el contenido completo de un archivo de una sola vez. Python te permite leer solo una parte espec铆fica del archivo utilizando m茅todos como read() con un argumento de tama帽o.

El m茅todo read(size):

El m茅todo read() se utiliza para leer el contenido del archivo. Si se le pasa un argumento entero size, leer谩 hasta esa cantidad de caracteres (en modo texto) o bytes (en modo binario) del archivo y devolver谩 la cadena o el objeto bytes le铆do. Si no se especifica size, leer谩 el archivo completo.

Ejemplo: Leer los primeros 10 caracteres de un archivo:

try:
    with open("demofile.txt", "r") as f:
        primeros_diez = f.read(10)
        print(f"Los primeros 10 caracteres son: '{primeros_diez}'")
except FileNotFoundError:
    print("El archivo 'demofile.txt' no fue encontrado.")
except Exception as e:
    print(f"Ocurri贸 un error: {e}")

En este ejemplo, abrimos el archivo "demofile.txt" en modo lectura ("r") utilizando la sentencia with, que asegura que el archivo se cierre autom谩ticamente al finalizar el bloque. Luego, leemos los primeros 10 caracteres del archivo utilizando f.read(10) y los imprimimos.

Leer partes secuencialmente:

Puedes llamar a read(size) varias veces para leer el archivo en partes secuenciales. El objeto archivo mantiene un puntero interno que indica la posici贸n actual de lectura. Cada llamada a read() comenzar谩 desde la posici贸n siguiente a la 煤ltima lectura.

Ejemplo: Leer un archivo en bloques de 5 caracteres:

try:
    with open("demofile.txt", "r") as f:
        bloque = f.read(5)
        while bloque:
            print(f"Bloque le铆do: '{bloque}'")
            bloque = f.read(5)
except FileNotFoundError:
    print("El archivo 'demofile.txt' no fue encontrado.")
except Exception as e:
    print(f"Ocurri贸 un error: {e}")

En este caso, leemos el archivo en bloques de 5 caracteres hasta que f.read(5) devuelve una cadena vac铆a, lo que indica que se ha llegado al final del archivo.

Leer solo partes espec铆ficas de un archivo puede ser eficiente, especialmente cuando se trabaja con archivos muy grandes, ya que evita cargar todo el contenido en la memoria de una sola vez.

馃搫 Read Lines

馃搫 Cuando trabajas con archivos de texto, a menudo es necesario leer el contenido l铆nea por l铆nea. Python proporciona varios m茅todos para lograr esto.

El m茅todo readline():

El m茅todo readline() lee una sola l铆nea del archivo, incluyendo el car谩cter de nueva l铆nea (\n) al final de la l铆nea si est谩 presente. En cada llamada sucesiva, readline() avanzar谩 al siguiente l铆nea del archivo y la leer谩. Cuando se alcanza el final del archivo, readline() devuelve una cadena vac铆a.

Ejemplo: Leer un archivo l铆nea por l铆nea usando readline():

try:
    with open("demofile.txt", "r") as f:
        linea = f.readline()
        while linea:
            print(f"L铆nea le铆da: '{linea.strip()}'") # .strip() elimina el car谩cter de nueva l铆nea
            linea = f.readline()
except FileNotFoundError:
    print("El archivo 'demofile.txt' no fue encontrado.")
except Exception as e:
    print(f"Ocurri贸 un error: {e}")

En este ejemplo, abrimos el archivo y luego, dentro de un bucle while, leemos cada l铆nea utilizando f.readline(). El m茅todo strip() se utiliza para eliminar cualquier car谩cter de espacio en blanco al principio o al final de la l铆nea, incluyendo el car谩cter de nueva l铆nea.

El m茅todo readlines():

El m茅todo readlines() lee todas las l铆neas del archivo y las devuelve como una lista de cadenas. Cada cadena en la lista representa una l铆nea del archivo, incluyendo el car谩cter de nueva l铆nea al final.

Ejemplo: Leer todas las l铆neas de un archivo usando readlines():

try:
    with open("demofile.txt", "r") as f:
        lineas = f.readlines()
        for linea in lineas:
            print(f"L铆nea le铆da (readlines): '{linea.strip()}'")
except FileNotFoundError:
    print("El archivo 'demofile.txt' no fue encontrado.")
except Exception as e:
    print(f"Ocurri贸 un error: {e}")

Aqu铆, f.readlines() devuelve una lista donde cada elemento es una l铆nea del archivo. Luego, iteramos sobre esta lista para imprimir cada l铆nea.

Iterando directamente sobre el objeto archivo:

Una forma a煤n m谩s concisa de leer un archivo l铆nea por l铆nea es iterar directamente sobre el objeto archivo en un bucle for. Esto es eficiente en t茅rminos de memoria, ya que no carga todo el archivo en la memoria a la vez.

Ejemplo: Iterar sobre el objeto archivo para leer l铆neas:

try:
    with open("demofile.txt", "r") as f:
        for linea in f:
            print(f"L铆nea le铆da (iteraci贸n): '{linea.strip()}'")
except FileNotFoundError:
    print("El archivo 'demofile.txt' no fue encontrado.")
except Exception as e:
    print(f"Ocurri贸 un error: {e}")

Esta es la forma m谩s idiom谩tica y recomendada para leer un archivo de texto l铆nea por l铆nea en Python.




Publicar un comentario

0 Comentarios