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.
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP