Wie kann ich eine neue Textzeile an einer Datei hinzufügen?

Ich entwickle ein einfaches Programm, das ein Python-Skript ausführbar macht, und ich arbeite in dem Teil, der den Interpreterpfad ( #! / Usr / bin / python ) hinzufügt. Ich habe versucht, es zu tun, aber anstatt eine neue Zeile hinzuzufügen, ersetzt es den Strom und entfernt einen Teil der nächsten Zeile. Was mache ich falsch?

Ich habe den Quellcode an Ubuntu Pastebin hochgeladen: http://pastebin.ubuntu.com/1032683/ Der falsche Code ist zwischen den Zeilen 28 und 31:

wfile = open(file, 'r+') if wfile.readline() != "#! /usr/bin/python\n": wfile.seek(0) wfile.write("#! /usr/bin/python\n") 

Verwenden von Python 2.7.2 mit einem iPad 2 ( Python für iOS ), auch mit 2.5.1 im gleichen iPad (Cydia Port) zum Testen.

3 Solutions collect form web for “Wie kann ich eine neue Textzeile an einer Datei hinzufügen?”

Sie können nicht tun, was Sie versuchen zu tun. Ich suche den Anfang einer Datei und mache einen Schreibvorgang von dieser Position überschreiben, nicht anhängen.

Die einzige Möglichkeit, eine Zeile in der Mitte (oder Anfang) einer Datei hinzuzufügen, besteht darin, eine neue Datei mit den eingefügten Daten zu schreiben, wo Sie sie haben möchten.

Joe ist richtig, dass man nicht einfach "Zeilen" am Anfang der Datei einfügen muss. Hier ist eine Lösung für Sie:

 with open(my_python_script, "r+") as f: first_line = f.readline() if first_line != "#! /usr/bin/python\n": lines = f.readlines() f.seek(0) f.write("#! /usr/bin/python\n") f.write(first_line) f.writelines(lines) 

Zum Hinzufügen / Ersetzen der ersten Zeile in jeder Datei, die an einer Befehlszeile angegeben ist:

 #!/usr/bin/env python import fileinput shebang = "#! /usr/bin/python\n" for line in fileinput.input(inplace=1): if fileinput.isfirstline() and line != shebang: print shebang, if not line.startswith("#!"): print line, else: print line, 
  • Extrahiert Ziffern auf einfache Weise aus einer Python-Saite
  • Welchen Unterschied zwischen subprocess.call () und subprocess.Popen () macht PIPE weniger sicher für das ehemalige?
  • Eine Google-Suche durchführen und die Anzahl der Ergebnisse zurückgeben
  • Es kann kein Bild vom Web mit urllib2 gespeichert werden
  • Tempfile.TemporaryDirectory Kontext Manager in Python 2.7
  • Super () und @staticmethod interaktion
  • Finde erstes Element von numpy ndarray von unbekannter Form
  • Python: subprocess32 process.stdout.readline () Wartezeit
  • Python-Pickle-Protokoll Auswahl?
  • Python gibt Länge von 2 für einzelne Unicode-Zeichenfolge zurück
  • Python: Sortieren von Dateien nach datetime in mehr Details
  • Python ist die beste Programmiersprache der Welt.