Kann ich eine Python-Beizliste, ein Tupel oder einen anderen iterierbaren Datentyp streamen?

8

Ich arbeite mit Komma / Tab-getrennten Dateien, die oft so aussehen:

%Vor%

Ich könnte das in Python lesen und vorverarbeiten in eine Liste von Listen, so:

%Vor%

Manchmal speichere ich diese Listenliste gern als Beize, da sie die verschiedenen Arten meiner Einträge enthält. Wenn die gebeizte Datei jedoch groß ist, wäre es toll, diese Listenliste streamingweise zu lesen.

Um in Python eine Textdatei als Stream zu laden, verwende ich die folgenden Zeilen, um jede Zeile auszudrucken:

%Vor%

Kann ich etwas ähnliches für eine Python-Liste tun, d. h .:

%Vor%

Gibt es eine Beißfunktion wie "load_streaming"?

    
williampli 12.07.2013, 20:30
quelle

2 Antworten

9

Das würde funktionieren.

Es wird jedoch ein Objekt aus der Datei entfernt und der Rest des Dateiinhalts in stdout

gedruckt

Was Sie tun könnten, ist etwas wie:

%Vor%

Damit werden alle Objekte aus der Datei entfernt, bis EOF erreicht wird.

Wenn Sie etwas wollen, das wie for line in f: funktioniert, können Sie dies leicht einpacken:

%Vor%

Jetzt können Sie das einfach tun:

%Vor%     
mata 12.07.2013, 20:37
quelle
0

Um einen Kommentar, den ich über die akzeptierte Lösung gemacht habe, weiter zu verfolgen, empfehle ich eher eine Schleife:

%Vor%

Auf diese Weise erhalten Sie weiterhin die Ausnahme EOFError, wenn in der Datei ein beschädigtes Objekt vorhanden ist.

Der Vollständigkeit halber:

%Vor%     
D. A. 19.04.2016 14:52
quelle

Tags und Links