Sie sollten in der Lage sein, das Element Stück für Stück in die Datei zu entleeren. Die zwei Entwurfsfragen, die Einebnung benötigen, sind:
- Wie erstellen Sie das Objekt, wenn Sie es in Arbeitsspeicher versetzen?
- Wie benötigen Sie Ihre Daten, wenn sie nicht mehr verfügbar sind?
Wenn Ihr Build-Prozess das gesamte Array mit einem bestimmten Schlüssel zu einer Zeit zugeordnet auffüllt, können Sie Dump nur das Schlüssel: Feldpaar in einer Datei als separates Wörterbuch:
big_hairy_dictionary['sample_key'] = pre_existing_array
marshal.dump({'sample_key':big_hairy_dictionary['sample_key']},'central_file')
dann auf Update , jeder Aufruf von marshal.load ('central_file') gibt ein Wörterbuch zurück, mit dem Sie ein zentrales Wörterbuch aktualisieren können. Aber das wird wirklich nur hilfreich sein, wenn Sie, wenn Sie die Daten zurück benötigen, einmal pro Taste das Lesen von "central_file" behandeln wollen.
Alternativ kann, wenn Sie Arrays Element in keiner bestimmten Reihenfolge durch das Element bevölkern, vielleicht versuchen:
big_hairy_dictionary['sample_key'].append(single_element)
marshal.dump(single_element,'marshaled_files/'+'sample_key')
Dann, wenn Sie es wieder laden, müssen Sie nicht unbedingt das gesamte Wörterbuch bauen zu bekommen zurück, was du brauchst; Sie rufen einfach marshal.load ('marshaled_files/sample_key') auf, bis es None zurückgibt, und Sie haben alles mit dem Schlüssel verknüpft.
Ich habe die Frage aktualisiert. Das Objekt ist ziemlich einfach, ein Wörterbuch von Arrays. Jedes Array ist ziemlich klein.Würde ich jedes einzelne Array marshalen? In die gleiche Datei? – Parand