TransWikia.com

Recorrer dos veces un mismo archivo de texto en Python

Stack Overflow en español Asked on November 27, 2021

tengo el siguiente archivo de texto llamado mi_archivo.txt:

Algo 1
Algo 2
Algo 3

Y tengo el siguiente código hecho en Python:

mi_archivo = open("mi_archivo.txt", "r")
for linea in mi_archivo:
    print(linea.strip())
for linea in mi_archivo:
    print(linea.strip())
mi_archivo.close()

La salida es:

Algo 1
Algo 2
Algo 3

Pero "en teoría" debería ser:

Algo 1
Algo 2
Algo 3
Algo 1
Algo 2
Algo 3

¿Alguien sabe por qué no ocurre esto último? No he encontrado la respuesta o alguna explicación teórica porque no he sabido formular bien esta pregunta en Google.

2 Answers

Lo que pasa es que existe un "apuntador" que lee linea por línea el archivo. Cuando llega a la última se queda ahí a menos que lo reinicies.

Una opción puede ser cerrando y volviendo a abrir el archivo.

La otra opción es utilizar seek() que cambia el apuntador a donde diga el usuario.

>>> mi_archivo = open("mi_archivo.txt", "r")
>>> mi_archivo.readline() # primera linea
'Algo 1n'
>>> mi_archivo.readline() # segunda linea
'Algo 2n'
>>> mi_archivo.seek(0) # el apuntador volvió a la primera linea
0
>>> mi_archivo.readline() # primera linea
'Algo 1n'
>>> mi_archivo.readlines() # Todas las lineas, pero el apuntador estaba en la 2da
['Algo 2n', 'Algo 3']
>>> mi_archivo.close()

Answered by aeportugal on November 27, 2021

Cuando llegas al final de un archivo, tienes que cerrarlo y abrirlo de nuevo para reelerlo.

Esto funciona así en cualquier lenguaje de programación.

Si el archivo simplemente volviera al principio, te generaría el tremendo problema de no saber cuando llegaste al final del archivo.

Rara vez hay necesidad de volver a repasar lo que ya leiste.

Answered by Candid Moe on November 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP