Ich habe 2 kleine Fragen bezüglich eines Scripts, das ich am schreiben bin. Erklärend muss ich anmerken, dass das mein erstes ist

Ich hab mich dazu schon mal durch die einschlägige Anfängerliteratur gewühlt (Byte of pthon etc) aber ich komm trotzdem irgendwie nicht drauf.
Es geht um folgendes: Ab und zu hat man (als Chemiker) Dateien mit Messdaten, deren Zeilenreihenfolge genau umgekehrt sein müsste, damit sie von der Auswertungssoftware gelesen werden kann, sprich Zeile 1 müsste eigentlich die letzte Zeile sein. Und genau das würde ich ganz gerne ein kleines Script erledigen lassen.
Dazu hab ich eine Testdatei "messdaten.dat" mit dem Inhalt
Code: Alles auswählen
#x-value y-value
1 2
3 4
5 6
Meine Idee war jetzt folgende: Ich lese jede Zeile der Datei aus, speichere jede Zeile als Element in einer Liste und nutze einfach liste.reverse() um die Reihenfolge umzudrehen. Dann speichere ich diese Liste in einer neuen Datei. Der Code dazu sieht wie folgt aus:
Code: Alles auswählen
# -*- coding: utf-8 -*-
#/usr/bin/python
'''This program aims to reverse the line order in a given file. This is useful for example for experimental data that is recorded backwards and therefore can't be read by certain software.
'''
import sys
if sys.version_info[0] != 3:
sys.exit('Need Python 3.0 or higher to run this program. Will quit now.')
inputfile = input('Please name the file you want to inverse: ')
f = open(inputfile)
linelist = []
def inverse():
for line in f:
linelist.append(line)
linelist.reverse()
newfile = open('inv_' + inputfile, 'w')
newfile.write(linelist)
newfile.close()
while True:
line = f.readline()
if len(line) == 0:
break
inverse()
print(linelist)
f.close()
Code: Alles auswählen
UnsupportedOperation: BufferedReader.write() not supported
Code: Alles auswählen
Output:
['5 6 \n', '1 2\n', '3 4\n']
Code: Alles auswählen
['5 6 \n', '3 4\n', '1 2\n']
Vielen Dank!