Sobes.tech
Junior

¿Qué hacen los métodos `tell` y `seek` en Python?

sobes.tech AI

Respuesta de la IA

El método tell() devuelve la posición actual del puntero del archivo en bytes. El método seek(offset, origin) mueve el puntero del archivo a un desplazamiento especificado.

Parámetros del método seek():

  • offset: Número de bytes para desplazarse.
  • origin: Punto de referencia para el desplazamiento. Los valores posibles son:
    • 0 (o io.SEEK_SET): Inicio del archivo (por defecto).
    • 1 (o io.SEEK_CUR): Posición actual del puntero del archivo.
    • 2 (o io.SEEK_END): Final del archivo.

Ejemplo de uso:

# Creamos un archivo para el ejemplo
with open("example.txt", "w") as f:
    f.write("Hello, world!")

# Abrimos el archivo para lectura
with open("example.txt", "r") as f:
    # Posición actual - inicio del archivo (0)
    print(f.tell()) # Mostrará 0

    # Leemos 5 caracteres
    content = f.read(5)
    print(content) # Mostrará Hello

    # Posición actual después de la lectura (5 bytes)
    print(f.tell()) # Mostrará 5

    # Nos desplazamos 3 bytes desde el inicio del archivo
    f.seek(3, 0)
    print(f.tell()) # Mostrará 3

    # Leemos el resto
    content = f.read()
    print(content) # Mostrará lo, world!

    # Posición actual - final del archivo
    print(f.tell()) # Mostrará 13

    # Nos desplazamos 5 bytes hacia atrás desde el final del archivo
    f.seek(-5, 2)
    print(f.tell()) # Mostrará 8

    # Leemos
    content = f.read()
    print(content) # Mostrará world!

Importante: En modo de texto ('r', 'w', 'a') seek() y tell() pueden no funcionar correctamente con datos no codificados o al usar caracteres especiales. Se recomienda usar modo binario ('rb', 'wb', 'ab') para una posicionamiento preciso.