Ich habe einen file.dat dieser Art, aber mit viel mehr Daten:Python - speichern, um verschiedene Dateien ausgewählte Zeilen und Spalten von Daten
Apr 1 18:15 [n1_Cam_A_120213_O.fits]:
4101.77 1. -3.5612 3.561 -0.278635 4.707 6.448 #data1
0.03223 0. 0.05278 0.05278 0.00237 0.4393 0.4125 #error1
4088.9 1. -0.404974 0.405 -0.06538 5.819 0. #data2
0. 0. 0.01559 0.01559 0.00277 0.1717 0. #error2
4116.4 1. -0.225521 0.2255 -0.041111 5.153 0. #data3
0. 0. 0.01947 0.01947 0.00368 0.4748 0. #error3
4120.8 1. -0.382279 0.3823 -0.062194 5.774 0. #data4
0. 0. 0.01873 0.01873 0.00311 0.3565 0. #error4
Apr 1 18:15 [n1_Cam_B_120213_O.fits]:
4101.767 0.9999 -4.57791 4.578 -0.388646 0.03091 7.499 #data1
0.0293 0. 0.03447 0.03447 0.00243 0.00873 0.07529 #error1
4088.9 1. -0.211493 0.2115 -0.080003 2.483 0.
0. 0. 0.01091 0.01091 0.00327 0.1275 0.
4116.4 1. -0.237161 0.2372 -0.040493 5.502 0.
0. 0. 0.02052 0.02052 0.00231 0.5069 0.
4120.8 1. -0.320798 0.3208 -0.108827 2.769 0.
0. 0. 0.0167 0.0167 0.00404 0.1165 0.
erste Zeile jeden Datensatz ein name.fits enthält, auch Zeilen enthalten Werte und ungerade Zeilen (außer dem ersten) enthalten Fehler der Werte in der vorherigen Zeile. Dann kommt eine leere Zeile und beginnt erneut.
Was ich brauche, ist die Information in verschiedene Dateien auf diese Weise zu trennen:
name1.fits data1[1] err1[1] data1[2] err1[2] data1[3] err1[3]...
name2.fits data1[1] err1[1] data1[2] err1[2] data1[3] err1[3]...
Also die nächste Datei
name1.fits data2[1] err2[1] data2[2] err2[2] data2[3] err2[3]...
name2.fits data2[1] err2[1] data2[2] err2[2] data2[3] err2[3]...
Dann wird die erste neue Datei meiner Daten aussehen würde wäre wie :
n1_Cam_A_120213_O.fits 4101.77 0.03223 1. 0. -3.5612 0.05278 3.561 0.05278 -0.278635 0.00237 4.707 0.4393 6.448 0.4125
n1_Cam_B_120213_O.fits 4101.767 0.0293 0.9999 0. -4.57791 0.03447 4.578 0.03447 -0.388646 0.00243 0.03091 0.00873 7.499 0.07529
Hier ist, was habe ich bisher:
with open('file.dat','r') as data, open('names.txt', 'a') as nam, open('values.txt', 'a') as val, open('errors.txt', 'a') as err:
for lines in data.readlines():
cols = lines.split()
if "fits" in lines:
header = lines.split()
nam.write(header[3])
elif float(cols[0]) > 1:
#print cols[0]
x=str(cols)
val.write(x)
elif float(cols[0]) < 1:
#print cols[0]
y=str(cols)
err.write(y)
Ich beginne gerade mit Python. Ich dachte in separaten Namen Werte und Fehler in verschiedenen Dateien und wählen Sie dann die Zeilen und Spalten, die ich brauche. Aber da ich mich mit Hunderten von Zeilen und Dateien beschäftigen werde, würde ich mir einen automatischeren Ansatz wünschen. Was ich will, ist die ersten 3 Zeilen zu lesen und schreiben Sie Datei1, dann Zeilen 1,4,5 und schreiben Sie Datei2, dann Zeilen 1,6,7 und schreiben Sie Datei3, dann Zeilen 1,8,9 und schreiben Sie Datei4, dann leer zu überspringen Zeilen und lese Zeilen 11,12,13 und schreibe Datei1, dann Zeilen 11,14,15 und schreibe Datei2, und so weiter (oder so ähnlich).
Danke für Ihre Antwort. Vielleicht fehlt mir etwas, aber die erzeugten Dateien sind leer. Ich bin irgendwie mit deinem Code verloren, ich werde es mir genauer ansehen. – JVR
Ich entfernte den Kommentar wie # data1, # error1 – Like
Ich bekomme immer noch leere Ausgänge. Erhalten Sie mit dem Code etwas anderes als es ist? – JVR