ich habe das Problem, dass ich eine sehr große Datenmenge "umsortieren" möchte in ein einziges file.
Algorithmisch sieht das ganze so aus, dass ich ca 180 (di) files habe die jeweils Matritzen der Größe 1600(xi) x 1200(yi) enthalten. Das Endformat sollte eine Datei sein in der die Werte dann in folgender Reihenfolge liegen:
x1 x2
d1 d2 d3 d1 d2
y1-yn y1-yn y1-yn ....... y1-yn y1-yn.....usw
(Anm: geschrieben werden nur die yi, die di und xi habe ich drüber geschrieben um zu sagen wo die y herkommen)
Nun könnte ich natürlich hingehen und jedes der di files aufmachen, die zeile y1-yn für das jeweilige xi rausschreiben, wieder zu machen um es dann beim nächsten xi wieder zu öffnen. Dann öffne ich aber jedes file im Maximum 1600 mal und das will ich unbedingt vermeiden.
Jetzt hab ich mir überlegt, ich könnte besser das erste file d1 aufmachen und erst einmal die xi dieses files schreiben. Dann sähe das Endfile nach dem ersten file so aus:
x1 x2 x3
d1 d1 d1
y1-yn y1-yn y1-yn
Dann öffne ich das zweite file d2, lese die entprechenden zeilen raus und füge sie im Endfile an die verschiedenen Positionen ein, nach dem zweiten file sähe das ganze dann so aus:
x1 x2
d1 d2 d1 d2
y1-yn y1-yn y1-yn y1-yn ...... usw
Auf diese Weise müsste ich jedes File nur ein einziges mal öffnen und wäre nach 180 durchläufen fertig.
Nun hab ich das Einfügen probiert mit dem setzen des Positionszeigers:
Code: Alles auswählen
f.open(file)
f.seek(pos,off)
f.write(daten)
f.open(file,"w") überschreibt er naturgemäß alles
mit
f.open(file,"a") schreibt er die daten nicht an der Stelle des gesetzten Positionszeigers, sondern hängt es (ebenfalls wohl ehr naturgemäß) hinten an.
Frage:
Weiß jemand, wie ich die Werte in der Mitte der Datei an den entsprechenden Positionen einfügen kann?
(oder hat eine andere Idee, wie ich mir das schon beinahe wahnsinnige öffnen und schließen der Dateien ersparen kann).
Wäre schön.
Gruß
Mutanab