Dann werde ich diese Aussage zurückziehen und mich bei Sirius hiermit entschuldigen.
Hoffe mal Sirius sieht das nicht so streng?
Daten aus Textdatei in andere Textdatei schreiben
@danpy: 1. würde ich nicht explizit machen. Da die Datei zeilenweise organisiert ist, kann man sie beim zeilenweisen Einlesen verarbeiten, ohne dass man die gesamte Datei auf einmal in den Speicher lesen muss.
Wenn das ein Ablaufplan sein soll, dann muss 4. vor 3. kommen, denn zum Anlegen der Datei benötigt man ja den Dateinamen.
Und 5. solltest Du auch vor 3. ziehen, denn man kann aus Dateien nicht einfach etwas entfernen. Das geht nur in Spezialfällen und ist auch dann noch umständlicher und ineffizienter als die Daten, die man dort nicht drin haben möchte, gar nicht erst in die Datei zu schreiben. Wenn Du so einen <Datei>-Abschnitt in eine passende Datenstruktur eingelesen hast, ist es aber sehr einfach nur die gewünschten Zeilen in die Datei zu schreiben.
Wenn das ein Ablaufplan sein soll, dann muss 4. vor 3. kommen, denn zum Anlegen der Datei benötigt man ja den Dateinamen.
Und 5. solltest Du auch vor 3. ziehen, denn man kann aus Dateien nicht einfach etwas entfernen. Das geht nur in Spezialfällen und ist auch dann noch umständlicher und ineffizienter als die Daten, die man dort nicht drin haben möchte, gar nicht erst in die Datei zu schreiben. Wenn Du so einen <Datei>-Abschnitt in eine passende Datenstruktur eingelesen hast, ist es aber sehr einfach nur die gewünschten Zeilen in die Datei zu schreiben.
1. Textdatei zeilenweise einlesen
2. das erste mal den Bereich <Datei ........ </Datei> einlesen und gleichzeitig das unerwünschte entfernen
3. neue Datei erstellen mit dem Wert von Titel
4. in die neue Datei den Text reinschreiben
5. Wieder vorn anfangen und den nächsten Bereich einlesen.
Habe den Ablauf so abgeändert wie Blackjack vorschlägt.
Bei diesen Ablauf kann ich den Wert vom Titel aber nicht rausfinden, weil ich den gelöscht habe.
Ist das ein Denkfehler on mir?
Ich würde das so machen, kombiniert mit den Vorschlägen on Blackjack.
1. Textdatei zeilenweise einlesen
2. das erste mal den Bereich <Datei ........ </Datei>
3. neue Datei erstellen mit dem Wert von Titel
4. bei dem Bereich <Datei ........ </Datei> das unerwünschte entfernen
5. in die neue Datei den Text reinschreiben der von 4. übrig geblieben ist
6. Wieder vorn anfangen und den nächsten Bereich einlesen.
Was sagt Ihr dazu?
Bin ich auf der richtigen Fährte?
2. das erste mal den Bereich <Datei ........ </Datei> einlesen und gleichzeitig das unerwünschte entfernen
3. neue Datei erstellen mit dem Wert von Titel
4. in die neue Datei den Text reinschreiben
5. Wieder vorn anfangen und den nächsten Bereich einlesen.
Habe den Ablauf so abgeändert wie Blackjack vorschlägt.
Bei diesen Ablauf kann ich den Wert vom Titel aber nicht rausfinden, weil ich den gelöscht habe.
Ist das ein Denkfehler on mir?
Ich würde das so machen, kombiniert mit den Vorschlägen on Blackjack.
1. Textdatei zeilenweise einlesen
2. das erste mal den Bereich <Datei ........ </Datei>
3. neue Datei erstellen mit dem Wert von Titel
4. bei dem Bereich <Datei ........ </Datei> das unerwünschte entfernen
5. in die neue Datei den Text reinschreiben der von 4. übrig geblieben ist
6. Wieder vorn anfangen und den nächsten Bereich einlesen.
Was sagt Ihr dazu?
Bin ich auf der richtigen Fährte?
Hallo danpy,
sorry für meine Unachtsamkeit. Man sollte einfach nicht im Forumseditor programmieren
Erinnert mich an meine Informatikklausuren, wo es punktabzug gab, wenn man einen Strichpunkt
vergessen hatte.
Nochmal eine Frage zu Anfang: Hast Du schon Erfahrung mit irgend einer Art von
Programmierung?
Man kann zum Beispiel die Zeile mit <datei ...> in eine Variable, nennen wir sie "kopf"
speichern und den Rest in eine zweite, "inhalt". Dann geht auch der Titel nicht verloren
und ist dennoch vom Inhalt getrennt.
Grüße
Sirius
sorry für meine Unachtsamkeit. Man sollte einfach nicht im Forumseditor programmieren

Erinnert mich an meine Informatikklausuren, wo es punktabzug gab, wenn man einen Strichpunkt
vergessen hatte.
Nochmal eine Frage zu Anfang: Hast Du schon Erfahrung mit irgend einer Art von
Programmierung?
Man kann zum Beispiel die Zeile mit <datei ...> in eine Variable, nennen wir sie "kopf"
speichern und den Rest in eine zweite, "inhalt". Dann geht auch der Titel nicht verloren
und ist dennoch vom Inhalt getrennt.
Grüße
Sirius
@danpy: Ich ging nicht davon aus, dass etwas „entfernt” wird, sondern das einfach etwas nicht geschrieben wird. Ob man die ersten und letzten Zeilen tatsächlich in der Datenstruktur entfernt oder einfach nur die Daten dazwischen in eine Datei schreibt, macht keinen wirklichen Unterschied.
1. und 2. sind eigentlich keine getrennten Punkte. Und bei zweitens sollte das „das erste mal” aus der Beschreibung verschwinden. Das wird zwar auch das erste mal gemacht, aber eben auch genau so bei jedem weiteren <Datei>-Abschnitt. Punkt 2. wäre also „<Datei>-Abschnitt zeilenweise einlesen.”
1. <Datei>-Abschnitt zeilenweise in eine Datenstruktur einlesen.
2. Zieldateinamen aus erster Zeile ermitteln.
3. Zeilen ausser den ersten und letzten Beiden in die Zieldatei schreiben.
4. Wieder zu 1.
Man muss sich dann noch überlegen wie man mit dem Ende der Eingabedatei umgeht und auf welche Sonderfälle man bei „kaputten” Dateien achten muss. Zum Beispiel sicherstellen, dass die zweite und vorletzte Zeile von einem <Datei>-Abschnitt tatsächlich leer ist. Und das die Datei auch mit '</Datei>' endet.
1-3 sind auf jeden Fall gute Kandidaten für Funktionen.
1. und 2. sind eigentlich keine getrennten Punkte. Und bei zweitens sollte das „das erste mal” aus der Beschreibung verschwinden. Das wird zwar auch das erste mal gemacht, aber eben auch genau so bei jedem weiteren <Datei>-Abschnitt. Punkt 2. wäre also „<Datei>-Abschnitt zeilenweise einlesen.”
1. <Datei>-Abschnitt zeilenweise in eine Datenstruktur einlesen.
2. Zieldateinamen aus erster Zeile ermitteln.
3. Zeilen ausser den ersten und letzten Beiden in die Zieldatei schreiben.
4. Wieder zu 1.
Man muss sich dann noch überlegen wie man mit dem Ende der Eingabedatei umgeht und auf welche Sonderfälle man bei „kaputten” Dateien achten muss. Zum Beispiel sicherstellen, dass die zweite und vorletzte Zeile von einem <Datei>-Abschnitt tatsächlich leer ist. Und das die Datei auch mit '</Datei>' endet.
1-3 sind auf jeden Fall gute Kandidaten für Funktionen.
Nicht schlecht einfach so aus dem Kopf ein Script schreiben.Sirius3 hat geschrieben: Hallo danpy
sorry für meine Unachtsamkeit. Man sollte einfach nicht im Forumseditor programmieren
Erinnert mich an meine Informatikklausuren, wo es punktabzug gab, wenn man einen Strichpunkt
vergessen hatte.
Nochmal eine Frage zu Anfang: Hast Du schon Erfahrung mit irgend einer Art von
Programmierung?
Man kann zum Beispiel die Zeile mit <datei ...> in eine Variable, nennen wir sie "kopf"
speichern und den Rest in eine zweite, "inhalt". Dann geht auch der Titel nicht verloren
und ist dennoch vom Inhalt getrennt.
Grüße
Sirius
Ich brauche meistens einen Plan wenn es zu kompliziert wird.
Programmierung habe ich leider noch nie gemacht.
Habe jetzt mal Python genommen, weil mir die Strukturen von den Scripten gefallen haben.
Die sehen irgendwie schön aus.
1. <Datei>-Abschnitt zeilenweise in eine Datenstruktur(Kopfteil, Mittelteil, Endteil) einlesen.BlackJack hat geschrieben:@danpy: Ich ging nicht davon aus, dass etwas „entfernt” wird, sondern das einfach etwas nicht geschrieben wird. Ob man die ersten und letzten Zeilen tatsächlich in der Datenstruktur entfernt oder einfach nur die Daten dazwischen in eine Datei schreibt, macht keinen wirklichen Unterschied.
1. und 2. sind eigentlich keine getrennten Punkte. Und bei zweitens sollte das „das erste mal” aus der Beschreibung verschwinden. Das wird zwar auch das erste mal gemacht, aber eben auch genau so bei jedem weiteren <Datei>-Abschnitt. Punkt 2. wäre also „<Datei>-Abschnitt zeilenweise einlesen.”
1. <Datei>-Abschnitt zeilenweise in eine Datenstruktur einlesen.
2. Zieldateinamen aus erster Zeile ermitteln.
3. Zeilen ausser den ersten und letzten Beiden in die Zieldatei schreiben.
4. Wieder zu 1.
Man muss sich dann noch überlegen wie man mit dem Ende der Eingabedatei umgeht und auf welche Sonderfälle man bei „kaputten” Dateien achten muss. Zum Beispiel sicherstellen, dass die zweite und vorletzte Zeile von einem <Datei>-Abschnitt tatsächlich leer ist. Und das die Datei auch mit '</Datei>' endet.
1-3 sind auf jeden Fall gute Kandidaten für Funktionen.
2. Zieldateinamen aus dem Kopfteil ermitteln.
3. Zieldatei erstellen
4. in die Zieldatei den Mittelteil schreiben
5. Wieder zu 1.
Das müsste dann wahrscheinlich passen, auf die Sonderfälle kann ich später eingehen, falls ich das erstmal hinbekomme.
Werde jetzt ein bissl über Datei zeilenweise einlesen, Datenstruktur und Funktionen lesen.
Hoffe mal das mir der Kopf danach nicht zusehr raucht.

Es ist schade, dass du das Lernen aufgegeben und die Trash-Lösung aus Stackoverflow übernommen hast.danpy hat geschrieben:Werde jetzt ein bissl über Datei zeilenweise einlesen, Datenstruktur und Funktionen lesen.
Hallo/me hat geschrieben:Es ist schade, dass du das Lernen aufgegeben und die Trash-Lösung aus Stackoverflow übernommen hast.
das Lernen habe ich nicht aufgegeben, werde noch weiterlesen um irgendwann ein eigenes Programm zuschreiben.
Zum jetzigen Zeitpunkt muss ich mir aber selber eingestehen, das es nicht möglich ist für mich ein derartiges Programm zuschreiben, da muss man einfach zuviel wissen in kurzer Zeit und wollte es bis zum 24. fertig haben.
Mir bringt es nichts wenn ich etwas über Funktionen und Datenstrukturen lese und nicht richtig verstehe.
Ich muss ganz am Anfang anfangen.
Mittendrin anfangen bringt mir nichts. Ich muss die Grundlagen verstehn, sonst wird das nichts mit dem Programmieren.
Hatte mir das einfacher vorgestellt.
Hinterher ist man immer schlauer.
Das Programm von Stackoverflow ist erstmal nur eine Übergangslöung für mich.
Wünsche allen geruhsame und Frohe Weihnachten
Ergänzung:
Um Sirius3 Code zum Laufen zu bekommen, sollte man noch finditer gegen findall austauschen. Sonst bekommt man ein
Gruß curly
P.S.: Habe dabei aber nicht wirklich Ahnung von der Materie, lese nur zum Vergnügen hier ab und zu mal mit. Probiere selten dann mal codesnippets aus. Hier bin ich durch einen Blick in die von BlackJack genannte Referenz zum `re`-Modul draufgekommen.
Um Sirius3 Code zum Laufen zu bekommen, sollte man noch finditer gegen findall austauschen. Sonst bekommt man ein
Code: Alles auswählen
Traceback (most recent call last):
File "forum-30664.py", line 8, in <module>
for outfilename, text in REG_PARSE.finditer(infile.read()):
TypeError: '_sre.SRE_Match' object is not iterable
P.S.: Habe dabei aber nicht wirklich Ahnung von der Materie, lese nur zum Vergnügen hier ab und zu mal mit. Probiere selten dann mal codesnippets aus. Hier bin ich durch einen Blick in die von BlackJack genannte Referenz zum `re`-Modul draufgekommen.