Wie kann ich Daten aus einer Datei lesen, die Daten bearbeiten und wieder in die Datei schreiben, ohne Speicher auf eine temporäre Datei zu verschwenden, wenn die Datei zu groß für die Verarbeitung ist in einem Stück?Lesen, Bearbeiten und Neuschreiben von Text in Datei mit Python
Antwort
sollte der folgende Code arbeiten:
chunksize = 64*1024 #arbitrary number
offset = 0
with open(path, 'r+b') as file:
while True:
file.seek(chunksize*offset) # sets pointer to reading spot
chunk = file.read(chunksize)
if len(chunk) == 0: # checks if EoF
break
elif len(chunk) % 16 != 0: # adds bytes to the chunk if it is the last chunk and size doesnt divide by 16 (if processing text of specific size, my case 16 bytes)
chunk += ' ' * (16 - len(chunk) % 16)
file.seek(chunksize*offset) # returns pointer to beginning of the chunk in order to rewrite the data that was encrypted
file.write(do_something(chunk)) # edits and writes data to file
offset += 1
Der Code liest die Daten, kehrt an den Anfang des Blockes und überschreibt sie. Es wird nicht funktionieren, wenn die manipulierten Daten größer als die gelesenen Daten sind.
Dadurch bleiben Teile der Datei unverändert, wenn die manipulierten Daten kleiner als "chunksize" sind. Anstatt nach 'chunksize * offset' zu suchen, sollten Sie verfolgen, wo die modifizierten Daten tatsächlich enden. –
Damit es funktioniert, müssen Sie Daten genau der Größe der gelesenen Daten manipuliert haben. Wenn Sie 'chunksize * offset' nicht verwenden, liegen zwischen dem Ende der geschriebenen Daten und dem Anfang der gelesenen Daten beschädigte Daten vor – IsaacDj
- 1. Bearbeiten von Text mit Python und Curses Textfeld Widget?
- 2. Lesen von Text-Datei wieder in einem Wörterbuch mit json.loads
- 3. Lesen von Text-Datei und Zeichnen von Kornstruktur mit Wert in Datei verfügbar
- 4. C++ lesen und bearbeiten jpg-Datei mit ifstream
- 5. Lesen und bearbeiten Sie die Datei von Java
- 6. Python bearbeiten XML-Datei
- 7. OnLongClick mit Text Anzeigen und Bearbeiten von Text
- 8. lesen Beziehungen von Datei mit IGRAPH Python
- 9. Ressourcennutzung in Datei lesen/schreiben mit Python, Optionen und Überlegungen
- 10. Bearbeiten von überspanntem Text
- 11. Bearbeiten von Text im Editor
- 12. Python-Modul zum Bearbeiten von Text in CLI
- 13. Suchen und Ersetzen von Text in DOCX-Datei - Python
- 14. entfernen Linien von Text-Datei mit Python
- 15. XML-Datei mit Python-Skript bearbeiten
- 16. Datei mit Timeout in Python lesen
- 17. lesen Excel-Datei in Python
- 18. .tar.gz-Datei in Python lesen
- 19. Große Datei in Python lesen
- 20. Text lesen und eine Klasse Daten in Python Zuweisung
- 21. Bearbeiten von Excel-Tabellen mit Python
- 22. Python-Datei Lesen + Schreiben
- 23. Lesen Zahlen von Text
- 24. Lesen einer Datei in Python
- 25. Lesen von einer Datei und Schreiben in StringIO - Python
- 26. lesen Text-Datei mit Programmatically Objective-C
- 27. BSON-Datei in Python lesen?
- 28. Lesen numerischer Excel-Daten als Text mit xlrd in Python
- 29. C# WPF Datei öffnen und bestimmten Text bearbeiten
- 30. Text Datei Zeile lesen Problem
Durch die Manipulation bedeuten Sie, Zeichen darin zu ändern oder mehrere Zeichen hinzuzufügen/zu entfernen, wodurch sich die Größe der Ausgabedatei ändert. Im ersten Fall lesen Sie nur Chunks ein und überschreiben dann die Chunks in der Datei. Im zweiten Fall (Änderung der Länge der Datei) wird es nicht funktionieren, Sie müssen eine separate Ausgabedatei erstellen. –