Wie kann ich Zeile einfügen an einem bestimmten Position

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
powerpython
User
Beiträge: 8
Registriert: Donnerstag 19. April 2007, 15:38
Kontaktdaten:

Wie kann ich Zeile einfügen an einem bestimmten Position

Beitragvon powerpython » Donnerstag 19. April 2007, 16:02

Hallo, Hilfe!!
Ich möchte z.B in einer Datei eine Zeile zwischen Zeile 3 und Zeile 4 einfügen, wie kann ich am besten vorgehen.
Der erste Idee ist, ich zerlege diese Datei in 2 Dateien und füge ich eine Zeile in Datei 1, und füge ich die beiden Dateien wieder zusammen.
Kann jmd mir an dieser Stelle hilfen, oder weiß jmd, wie man ohne die Datei zu zerlegen direkt Zeile einfügen kann.
BlackJack

Beitragvon BlackJack » Donnerstag 19. April 2007, 17:04

Direkt einfügen geht nicht weil die einzelnen Bytes nacheinander in der Datei liegen. Man müsste ja alles nach der eingefügten Zeile nach "hinten" verschieben.

Wenn die Datei nicht zu gross ist kann man sie komplett in eine Liste mit Zeilen einlesen, die neue Zeile in diese Liste einfügen und dann die Zeilen wieder in die Datei schreiben.

Ansonsten muss man zwei Dateien benutzen. Erst alle Zeilen bis zum Einfügepunkt in eine neue Datei kopieren, dann die neue Zeile in diese Datei schreiben und dann die restlichen Zeilen hinterherkopieren. Zum Schluss benennt man die Datei noch zur Ursprungsdatei um.
powerpython
User
Beiträge: 8
Registriert: Donnerstag 19. April 2007, 15:38
Kontaktdaten:

Beitragvon powerpython » Freitag 20. April 2007, 09:34

Ich bin ein absoluter Pythonanfänger und weiß nicht, wie ich das ganze schreiben kann, kannst du mal paar code schreiben, vielen Dank![/code]
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 20. April 2007, 09:44

powerpython hat geschrieben:Ich bin ein absoluter Pythonanfänger

Hi powerpython!

Ich weiß, dass ich fies bin. :twisted:
Wenn du dir das http://www.python-forum.de/topic-6157.html durchgelesen hast, dann helfe ich dir weiter. ;-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 20. April 2007, 09:57

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

FILENAME = "testdatei.txt"


def create_file(filename):
    """
    Erstellt die Testdatei mit Text
    """
   
    # Textzeilen (\n steht für einen Zeilenumbruch)
    lines = [
        "Ich bin Zeile 1\n",
        "Ich bin Zeile 2\n",
        "Ich bin Zeile 3\n",
    ]
   
    # Datei zum Schreiben öffnen und Zeilen hineinschreiben
    f = file(filename, "w")
    f.writelines(lines)
    f.close()


def insert_line(filename, insert_pos, line):
    """
    Fügt der angegebenen Datei oberhalb der angegebenen Position die
    Zeile hinzu. Diese Funktion sollte nicht für große Dateien (50 MB)
    verwendet werden.
    """
   
    # Datei zum Lesen öffnen und alle Zeilen in eine Liste einlesen
    f = file(filename, "rU")
    lines = f.readlines()
    f.close()
   
    # Wenn die Zeile nicht mit einem Zeilenumbruch endet, dann wird dieser
    # hinzugefügt.
    if not line.endswith("\n"):
        line += "\n"
   
    # Der Liste die neue Zeile hinzufügen
    lines.insert(insert_pos, line)
   
    # Speichern
    f = file(filename, "w")
    f.writelines(lines)
    f.close()


def main():
    create_file(FILENAME)
    insert_line(FILENAME, 1, "Ich bin gekommen um zu bleiben.")


if __name__ == "__main__":
    main()

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Beitragvon N317V » Freitag 20. April 2007, 10:52

:roll:
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 20. April 2007, 11:23

N317V hat geschrieben::roll:

Hi N317V!

Wie glaubst du, kann man jemandem guten Programmierstil beibringen? Mit abstrakten Erklärungen oder mit guten Beispielen?

Wir sind anderer Meinung darüber und es bringt nichts, einen alten Hasen, der schon vor über zehn Jahren im WIFI unterrichtet hat, davon abbringen zu wollen. Im Physik-Unterricht wollen wir praktische Beispiele. Im Mathematik-Unterricht wollen wir praktische Beispiele. Warum soll das in der Programmierung anders sein. Alle jammern, dass zu wenig Beispiele in der Python-Dokumentation sind. Und du und evt. noch ein paar andere glauben, dass jemandem mehr geholfen ist, wenn man ihm nur ein paar abstrakte Hinweise vor die Füße schmeißt. -- Ich nicht!

Falls das zu einer Grundsatzdiskussion ausartet, müssen wir die Beiträge von dem Originalthema abtrennen.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Beitragvon BlackJack » Freitag 20. April 2007, 11:50

Ich will's nicht in eine Grundsatzdiskussion ausarten lassen, aber vom OP gibt's noch einen anderen Beitrag und beide zusammen lassen die Vermutung zu, dass Du ihm gerade einen Teil seiner Hausaufgabe gelöst hast. ;-)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 20. April 2007, 12:03

BlackJack hat geschrieben:beide zusammen lassen die Vermutung zu, dass Du ihm gerade einen Teil seiner Hausaufgabe gelöst hast. ;-)

Ups!

:oops: :roll:

Das wollte ich nicht!

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Beitragvon N317V » Freitag 20. April 2007, 12:35

Im Übrigen hätte die Suchfunktion mindestens einen Thread zu diesem Thema zu Tage befördert. Und zwar einen, in dem der Fragende auch seine eigenen Versuche in Form von Quelltext postet.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt

Wer ist online?

Mitglieder in diesem Forum: snafu