2016-09-06 1 views
-6

ich das Problem neu formulieren werde ich bereits erwähnt hatte:Lesen Sie CSV-Datei und hält nur ein paar Zeilen nach Werten in der Liste (Python)

ich zur Zeit nur versuchen, über 26 Millionen Zeilen aus einer Datei lesen, die über hat 600 Millionen. Ich habe derzeit eine Liste mit den 26 Millionen Zeilen, die mich interessieren.

Meine Lösung ist wie folgt:

## list_ is a list of indices with the number of the 26MM rows 

# First, open the output file where i want to copy the 26MM rows 
with open(output_file,'w') as g: 
# Open the source file with 600MM rows 
    with open(source_file,'r') as f: 
    for i,line in enumerate(f): 
     if i in list_: 
     g.write(line) 

die Größe der Liste und die Größe der Originaldatei gegeben, ich fürchte, es könnte zu lange dauern, diese Datei zu verarbeiten. Ich bin mir bewusst, dass dieses Thema in anderen Fragen behandelt wurde, aber ich glaube nicht, dass andere Beiträge gefragt haben, wann die Textdateien sehr groß sind.

Danke und Entschuldigung für die frühere verwirrend Post,

+2

Was ist passiert, als Sie es versucht haben? – kindall

+0

Es ist gerade seit ein paar Stunden los. Ich habe mich nur gefragt, ob es einen besseren Weg gibt, dies zu tun. Ich sollte das Problem, mit dem ich konfrontiert bin, wahrscheinlich besser beschreiben, und die Suche nach Millionenwerten in Listen ist das Beste, was ich mir vorstellen kann. – dleal

+1

Versuchen Sie einen Schritt zurück und beschreiben Sie das eigentliche Problem. Warum müssen Sie diese Liste 600 Millionen Mal überprüfen? Sind die Elemente völlig zufällig oder gibt es eine Struktur? Fast sicher gibt es einen besseren Weg, um das zu tun, was Sie brauchen. –

Antwort

0

Wenn Sie nur, ob ein Wert in dieser Liste überprüfen mögen, ist die beste Zeit O (1) für jeden Scheck. Sie möchten wahrscheinlich Hashset anstelle einer Liste verwenden. Sie können Google Hash-Set in Python, um ein Beispiel zu sehen, wie this oder sehen Sie dieses Dokument, sets.

+0

mit Sets statt Liste löste es, danke! – dleal

Verwandte Themen