Ich habe Probleme beim Extrahieren von Daten aus einer Liste von Dicts basierend auf der Position in meiner Konfiguration definiert. Szenario: Ich bekomme eine Liste von Dict aus der Vertica-Tabelle (durch einige Methodenaufruf) und ich muss diese Daten (Schlüssel als Header und Wert als Dateninhalt) in die Datei schreiben, so dass ich diese Datei hochladen kann zu einem anderen Zweck sftp.Wie schreibe ich Daten in eine Datei basierend auf der Position in Python
Beispiel
# data received in a list of dict
new_list = [{'Table':'A', 'Column':'C1', 'DataType':'int'},
{'Table':'A', 'Column':'C2', 'DataType':'varchar'},
{'Table': 'B', 'Column': 'C3', 'DataType': 'int'}
]
Meine Konfiguration so definiert ist, dass „Table“ Daten von 0 bis 10 beginnen werden, „Spalte“ wird von 11 bis 25 beginnt und dann „Datentyp“ wird aus 25 starten 35 in der Datei. Wenn nicht genügend Daten vorhanden sind, um den definierten Bereich zu füllen, müssen Sie mit Leerzeichen nach den Daten arbeiten, bis die angegebene Feldlänge erreicht ist. Also erwarte ich Output wie unten. Hier ist die Liste dynamisch. Ich weiß, ich muss seek()
verwenden, aber etwas verwirrt.
Table Column DataType
A C1 int
A C2 varchar
B C3 int
Irgendwelche Vorschläge?
Sich auf Listenindizes zu verlassen, um Ihre Daten zu finden, ist brüchig und verschwenderisch. Ich würde ein anderes Datenformat als Listen verwenden; Was ist mit einem Wörterbuch von Wörterbüchern? Json? Jedenfalls bin ich mir sicher, dass ich die Frage genau verstehe. Wo ist dein Code zum Schreiben von Dateien? – jDo
Meine Empfehlung würde 'struct' Modul verwenden, wäre aber eine lange Antwort –
Öffnen Sie die Datei zum Schreiben und Aktualisieren mit' w + 'Modus. Rufen Sie 'seek()' auf, um zur gewünschten Position zu wechseln, und verwenden Sie 'write()', um die gewünschten Daten zu schreiben. –