Ich muss einige Daten in eine TXT-Datei aus Python 3.4/3.2 drucken.Drucken große Daten in Datei mit speziellen Format von Python
Jede Zeile in der Datei hat folgendes Format:
col1 | col2 | col3 |
id1 CT_TYPE value1 CT_TYPE value2
AR CT1 239 CT2 9.66
AR CT3 8.65
NY CT1 6.25 CT2 67.89
NY CT3 78.61
Für gleiche id1, wenn es mehr als zwei Werte von CT_TYPE sind, müssen sie in den beiden col2 und col3 und nur den letzten Wert gedruckt vom Typ id1 kann col3 leer bleiben. Zum Beispiel ist das folgende Druckformat falsch.
col1 | col2 | col3 |
id1 CT_TYPE value1 CT_TYPE value2
AR CT1 239 " this cannot be left as blank"
AR CT2 9.66 CT3 8.65
Für einen anderen ID1-Wert muss eine neue Zeile hinzugefügt werden. Fror Beispiel id1 = NY kann nicht auf der gleichen Linie mit AR sein:
AR CT3 8.65 NY CT1 6.25 // this is not allowed.
Es Hunderttausende von Datenleitungen, die gedruckt werden müssen. Ich möchte die Sortierung nicht verwenden, da die Datengröße zu groß ist, um in einer Datenstruktur in Python gespeichert zu werden. Also muss ich die Daten blockweise aus der Datenbank laden und in Datei drucken. Ich kann sicherstellen, dass jeder aus der Datenbank geladene Block den gleichen ID1-Wert hat.
Meine Frage ist, wie man sicherstellen kann, dass das oben genannte Format beibehalten wird, wenn Daten Block für Block gedruckt werden? In Python I verwendet:
with open(fileName, 'a') as f:
f.wite(aLine + "\n");
Wie die aktuelle Druckposition zu ändern, so dass die CT_type Werte desselben id1 Typs bei der gleichen Zeile gedruckt werden, selbst genug, um eine Neuen-Zeile „\ n“ nach dem hinzugefügt wurde letzte Datenzeile wurde gedruckt. Zum Beispiel, wenn meine Datei hat diesen:
col1 | col2 | col3 |
id1 CT_TYPE value1 CT_TYPE value2
AR CT1 239
Eine neue Datenleitung in einem neuen Block ist wie:
AR CT2 9.66
Ich mag:
col1 | col2 | col3 |
id1 CT_TYPE value1 CT_TYPE value2
AR CT1 239 CT2 9.66
Nicht:
col1 | col2 | col3 |
id1 CT_TYPE value1 CT_TYPE value2
AR CT1 239
AR CT2 9.66
Danke