Ich habe eine Textdatei, die ich in einer Liste speichern muss.Dateiinhalt in eine Liste einfügen?
DATEI:
1 1
4 2
9 10
Ich möchte eine Liste von Objekten haben. L = [obj obj obj]
Code:
def putInList(pathToFile):
myList = []
with open(pathToFile) as f:
for line in f:
s = line.split()
x, y = [int(v) for v in s]
jemand = Mensch(x, y)
myList.append(jemand)
return myList
Dies funktioniert gut! Mein Problem ist, dass ich DISK MEMORY die Anzahl der Zeilen mal zugreifen!
Und dieses Beispiel ist künstlich, ich werde mit viel größeren Dateien arbeiten. Also habe ich einen Slicer geschrieben, der sie in ~100MB
.txt
Dateien steckt. Also würde ich sie gerne in eine list
ohne Zugriff auf die disk memory
Millionen Male setzen.
Nach Suche und anderen Fragen auf Stackoverflow ich dieses Stück Code gefunden:
a = open(fileToPath, 'r')
L = [line for line in a.readlines()]
Aber ich habe keine Ahnung, wie man eine Liste zu analysieren?
Ihre Annahme ist falsch, Sie nicht auf Festplattenspeicher $ Zeilen Zeiten zugreifen. Puffern geht damit um. Keine Sorge, ich habe mehrere Gigabyte große Dateien durchsucht. – L3viathan
@ L3viathan, nur das Parsen einer 100MB Datei dauert 15 Minuten! Klingt das normal? –
Ich weiß nicht was deine 'Mensch' Klasse macht, also weiß ich nicht genau was der Flaschenhals ist. Aber die Aufteilung der Datei in Teile hilft nicht, wenn Sie am Ende sowieso alles in Ihren Arbeitsspeicher legen. Für weitere Vorschläge siehe meine Antwort. – L3viathan