ich mit Komma/Tab getrennte Datendateien häufig arbeiten, die wie folgt aussehen könnte:Kann ich eine Python-Beizliste, ein Tupel oder einen anderen iterierbaren Datentyp streamen?
key1,1,2.02,hello,4
key2,3,4.01,goodbye,6
...
könnte ich lesen und Vorprozess dies in Python in eine Liste von Listen, wie folgt aus:
[ [ key1, 1, 2.02, 'hello', 4 ], [ key2, 3, 4.01, 'goodbye', 6 ] ]
Manchmal speichere ich gerne diese Liste von Listen als Beize, da sie die verschiedenen Arten meiner Einträge bewahrt. Wenn die gebeizte Datei jedoch groß ist, wäre es großartig, diese Liste von Listen wieder streamingweise zu lesen.
In Python, eine Textdatei als Stream zu laden, benutze ich das follwoing aus jeder Zeile zu drucken:
with open('big_text_file.txt') as f:
for line in f:
print line
Kann ich etwas tun, ähnlich für eine Python-Liste, das heißt:
import pickle
with open('big_pickled_list.pkl') as p:
for entry in pickle.load_streaming(p): # note: pickle.load_streaming doesn't exist
print entry
Gibt es eine Beizfunktion wie "load_streaming"?
was meinst du mit "Streaming"? was willst du "entry" sein? Beachten Sie auch, dass Ihr Code, wie er geschrieben wurde, wahrscheinlich nicht das tut, was Sie beabsichtigen. meinst du "für den eintrag in pkl" statt "für den eintrag in p"? – shx2
Ich denke, mit "streaming" bedeutet er, eine Pickle-Datei als eine Folge von Pickles zu wiederholen, genauso wie man eine Textdatei als eine Folge von Zeilen iterieren kann, wie Matas Antwort tut. – abarnert