Schreiben in der Datei die aktuelle position in Python
Ich Lesen möchte eine Zeile in einer Datei einfügen und die neue Zeile ("\n") Charakter in der n-position auf eine Linie, so dass ein 9-Zeichen-Zeile, zum Beispiel, wird umgewandelt in drei 3-Zeichen-Zeilen, wie diese:
"123456789" (before)
"123\n456\n789" (after)
Ich habe versucht mit diesem:
f = open(file, "r+")
f.write("123456789")
f.seek(3, 0)
f.write("\n")
f.seek(0)
f.read()
-> '123\n56789'
Möchte ich es nicht ersetzen Sie das Zeichen in position n, sondern nur auf einen anderen einfügen ("\n") char in dieser position.
Jede Vorstellung, wie dies zu tun?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass es irgendeinen Weg gibt, das zu tun, wie Sie es versuchen: Sie würde Lesen müssen, um an das Ende der Datei ab der position, die Sie einfügen möchten, und schreiben Sie dann Ihre neue Figur an die position, die Sie wollen, schreiben Sie dann die ursprünglichen Daten zurück, nachdem es. Dies ist die gleiche Art, wie die Dinge funktionieren würde, in C oder in einer anderen Sprache mit seek() Typ API.
Alternativ Lesen Sie die Datei in einen string, dann verwenden Sie Liste der Methoden zum einfügen Ihrer Daten.
position
von jeweils 4 Zeit (beginnend mitposition
2), mit der Grund für das Inkrementieren von 4 werden, dass Sie würde haben, um für die eingefügte Zeichen neben die nächsten drei Zeichen.file_data
eine Liste mitlist(file_data)
. So oder so, obwohl, der code würde nicht funktionieren, wie erwartet.\n
alle drei Charaktere in den ursprünglichen Daten.Ich glaube nicht, dass es allen, die Pythonic (aufgrund der
range(len(data))
), aber es sollte funktionieren, es sei denn, Ihre Daten-Datei ist wirklich sehr groß ist (in welchem Fall Sie haben, um die Daten in die Datei Bauteil für Bauteil und speichern die Ergebnisse in eine andere Datei zu vermeiden überschreiben der Daten, die Sie noch nicht bearbeitet noch nicht).(Mehr auf der
mit
- Anweisung.)Können Sie denken, eine Datei ist einfach nur ein array von Zeichen, und wenn Sie möchten, legen Sie ein neues element in der Mitte eines Arrays ist, dann müssen Sie die Umschalttaste alle Elemente, die Sie ihm nach.
Könnten Sie tun, was Sie sagen, wenn die Datei enthielt eine "verlinkten Liste" von chars oder "erweitert", aber dann benötigen Sie einen speziellen editor, um es zu sehen nacheinander.