Seite 1 von 2

Re: Nur jede dritte Zeile einlesen

Verfasst: Dienstag 20. Oktober 2015, 15:28
von cofi
Nochmal /me's Punkt: `line` ist immer ein String und da ein String in Python immer aus Strings besteht, ist auch `line[24]` immer ein String. Darum kannst du dir Zeile 5&6 sparen.

Wenn dir die Fehlermeldung tatsaechlich nichts sagt, dann ueberleg mal wie man beschreibt, was in `b` geschrieben wird ;)

Re: Nur jede dritte Zeile einlesen

Verfasst: Dienstag 20. Oktober 2015, 16:28
von Kahnbein.Kai
Ha es hat geklappt.
Danke Leute für eure geduldige Hilfe und Erklärungen.

Im 2.Semester hatte ich Phyton im Studium, ich werde die Vorlesungen incl. Übungen nochmal durcharbeiten und dann darauf aufbauen.


Gruß und einen schönen Abend noch


Kai

Hier ist noch der fertige Code

Code: Alles auswählen

a=open("HALL_GES.txt","r")
b=open("HALL_GESB.txt","w")
 

for line in a:
    c="D" in line
    if c is True:
        b.write(line)
b.close()
a.close()

Re: Nur jede dritte Zeile einlesen

Verfasst: Dienstag 20. Oktober 2015, 17:22
von /me
Kahnbein.Kai hat geschrieben:

Code: Alles auswählen

    c="D" in line
    if c is True:
        b.write(line)
Das kann man jetzt noch schöner schreiben.

Code: Alles auswählen

    if "D" in line:
        b.write(line)

Re: Nur jede dritte Zeile einlesen

Verfasst: Dienstag 20. Oktober 2015, 18:01
von pillmuncher
Übrigens heißt es Python, nicht Phyton.

Re: Nur jede dritte Zeile einlesen

Verfasst: Freitag 23. Oktober 2015, 15:23
von kodela
Hallo,

damit müsste es mit jeder dritten Zeile funktionieren:

Code: Alles auswählen

        fin = open('test_Q.txt', 'r')
        fout = open('test_Z.txt', 'w')
        z = -1
        while 1:
            zeile = fin.readline()
            if zeile == "":
                break
            z += 1
            if z % 3 == 0:
                fout.write(zeile)
        fin.close
        fout.close()
MfG, kodela

Re: Nur jede dritte Zeile einlesen

Verfasst: Freitag 23. Oktober 2015, 15:25
von mutetella
@kodela
Lies Dir den gesamten Thread mal durch, da sind bessere Lösungen dabei.... :wink:

mutetella

Re: Nur jede dritte Zeile einlesen

Verfasst: Freitag 23. Oktober 2015, 22:05
von kodela
@mutetella

ja, ich habe mir schon alles durchgelesen, aber als blutiger Anfänger, der sich erst seit zwei Wochen mit Python beschäftigt, wusste ich nicht, dass zum Code von BlackJack noch eine Importanweisung gehört. Hätte er diese dazugeschrieben (from itertools import islice), dann hätte ich seinen Code erfolgreich testen können und mich nicht nach einer anderen Lösung bemühen müssen. Macht aber nichts, habe jetzt eben etwas dazu gelernt.

MfG, kodela

PS: Wie sieht es übrigens für den Code von BlackJack mit dem Schließen der Dateien aus?

Re: Nur jede dritte Zeile einlesen

Verfasst: Freitag 23. Oktober 2015, 22:12
von cofi
Anders als bei dir, werden seine Dateien geschlossen ;) In Zeile 11 fehlen Klammern und generell solltest du Dateien nicht explizit schliessen, sondern, wie bei BlackJack, das `with` Statement benutzen.

Re: Nur jede dritte Zeile einlesen

Verfasst: Freitag 23. Oktober 2015, 22:38
von kodela
@mutetella

Die fehlenden Klammern habe ich bei mir schon entdeckt und hinzugefügt. Hier kann ich das leider nicht mehr machen.

Zum Schließen habe ich aber noch eine Frage. Ist es richtig, wenn ich aus Deinen Worten entnehme, dass immer dann, wenn eine Datei über das "with"-Statement geöffnet wird, die Datei automatisch geschlossen wird, sobald kein Zugriff mehr getätigt wird?

MfG, kodela

Re: Nur jede dritte Zeile einlesen

Verfasst: Freitag 23. Oktober 2015, 23:02
von BlackJack
@kodela: Sobald der Programmfluss den ``with``-Block verlässt — egal aus welchen Gründen.

Re: Nur jede dritte Zeile einlesen

Verfasst: Freitag 23. Oktober 2015, 23:24
von kodela
@BlackJack

Danke!