In Python mitten in einem TXT-Dokument mehrere Zeilen einfügen?
Hallo, ich habe ein Script, welches bestimmte Werte in eine .txt schreibt. Nun will ich in der 10. Zeile die Zeitdauer für das Schreiben der Werte in die Datei einfügen (Zeitdauer bestimmen, ... schon fertig und als str vorhanden). Wie kann ich nun, ohne das Nachfolgende zu überschreiben, diese Zeilen einfügen?
2 Antworten
Du kannst in Dateien nichts einfügen, was den nachfolgenden Inhalt nach hinten schiebt. Das hat nichts mit Python oder Windows zu tun, sondern liegt daran, dass Dateisysteme auf Block-Geräte zugeschnitten sind.
Du kannst aber im ersten Durchgang genug Platz lassen und diesen abschließend überschreiben:
with open("data.txt", "r+") as file:
file.truncate()
file.writelines( "Zeile %i\n"%(i+1,) for i in range(10) )
zeitpos = file.tell()
file.write( bytearay("????????\n", "utf-8") )
# Daten schreiben...
file.seek( zeitpos, 0 )
file.write( "%.8s"%(dauer,), "utf-8" )
Die Kunst besteht nur darin, beim Schreiben von dauer nicht versehentlich mehr zu schreiben als Platz gelassen wurde :-)
Moin
schau mal hier ->
https://www.tutorialspoint.com/python/list_insert.htm
#!/usr/bin/python
aList = [123, 'xyz', 'zara', 'abc']
aList.insert( 3, 2009)
print "Final List : ", aList
so long(knife)
Da hat er recht, Nutze die Liste oder ein Array und schreib es dann in die Datei.
Die Idee ist zwar gut, jedoch existiert die Liste mit den Werten schon und ist alleine über 2,1 Mrd. Werte groß. Da es bei dem Script um Schnelligkeit geht, hoffte ich es gäbe einen schnelleren Weg als über eine 2. Liste. Dennoch vielen Dank ;)
2.1 Mrd werte ?
WTF, welcher Vollpfosten, hat Dich dann zu Phyton gezwungen ?
IMHO - Irsinig, es Sei den Du hast ein Fettes ServerBlade!
so long(knife)
Ich möchte es in eine Datei einfügen, nicht in eine Liste. Oder verstehe ich dich falsch?