Ich möchte eine große Textdatei in einer Größe von 50 GB in mehrere Dateien aufteilen. Daten in den Dateien sind wie folgt- [x = irgendeine ganze Zahl zwischen 0-9]
%Vor%Es könnte einige Milliarden Zeilen in der Datei geben und ich möchte zum Beispiel 30/40 Millionen pro Datei schreiben. Ich denke, die Schritte wären -
Ich frage mich, wie man all diese Schritte effizient und schneller in einen Speicher bringt. Ich habe einige Beispiele im Stack gesehen, aber keiner von ihnen hilft mir, was ich genau brauche. Ich würde es sehr schätzen, wenn mir jemand helfen könnte.
Diese Arbeitslösung verwendet den in der Shell verfügbaren Befehl split
. Da der Autor bereits eine Möglichkeit einer Nicht-Python-Lösung akzeptiert hat, bitte nicht runterladen.
Zuerst habe ich eine Testdatei mit 1000M Einträgen (15 GB) mit
erstellt %Vor% Dann habe ich split
:
Es hat 5 Minuten gedauert, einen Satz von 34 kleinen Dateien mit den Namen t00
- t33
zu erstellen. 33 Dateien sind jeweils 458 MB und die letzte t33
ist 153 MB.
Ich würde das Unix-Utility-Split verwenden, wenn es für Sie verfügbar ist und Ihre einzige Aufgabe ist es, die Datei zu teilen. Hier ist jedoch eine reine Python-Lösung:
%Vor%Wenn alle Ihre Zeilen vier 3-stellige Zahlen enthalten und Sie mehrere Kerne verfügbar haben, können Sie die Dateisuche ausnutzen und mehrere Prozesse ausführen.
Tags und Links python split python-2.7 unix