Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Als erstes wird eine Liste mit den erwarteten Elementen (die einzelnen Zeilen der Textdatei als Strings gespreichert) ausgegeben.
Beim zweiten Mal wird eine leere Liste ausgegeben.
Die Frage lässt sich mit einer Gegenfrage beantworten: in Zeile 2 werden alle Zeilen der Datei gelesen, wie viele verbleiben in Zeile 4 noch zum lesen?
Ich dachte die Daten werden einfach nur kopiert, warum sollte sich das nicht wiederholen lassen.
Wie kann ich die Schreib/Leseposition manuell zurückstellen?
Eine Kopie der Daten wäre für die meisten ein reativ unerwartetes Verhalten, da würde man eher ein Attribut "lines" erwarten und weniger eine Funktion.
Zwei Anmerkungen: Man kann nicht bei allen Dateien "seek"en und warum sollte man den Lesevorgang wiederholen wollen, wenn man die Daten schon einmal ins Programm eingelesen hat?