Seite 1 von 1

Problem mit readline(), nimmt nur jede 2, Zeile!

Verfasst: Dienstag 23. August 2011, 17:14
von pytor
Hallo,
Ich habe ein Problem mit der readline() Funktion. Ich habe den Eindruck, sie liest und verarbeitet nur jede 2. Zeile!
kann das sein ? und wie kann ich das Problem lösen? Gibt es ein Problem mit dem Zeilen-Endezeichen?

Hier etwas Code:

Code: Alles auswählen

    with fi as inf:
        for line in inf:
            line = inf.readline()
        
            regex1 = '20226110'
            regex2 = '20227110'
            regex3 = '20228110'
            regex4 = '20334110'
            if re.search(regex1, line):
                fo_1.write(line)
                continue
            elif re.search(regex2, line):
                fo_2.write(line)
                continue
            elif re.search(regex3, line):
                fo_3.write(line)
                continue
            elif re.search(regex4,line):
                fo_4.write(line)
                continue
            
Danke für Hinweise! und bringt das with as statement hier überhaupt was?

Re: Problem mit readline(), nimmt nur jede 2, Zeile!

Verfasst: Dienstag 23. August 2011, 17:28
von /me
pytor hat geschrieben:Hallo,
Ich habe ein Problem mit der readline() Funktion. Ich habe den Eindruck, sie liest und verarbeitet nur jede 2. Zeile!
kann das sein ? und wie kann ich das Problem lösen? Gibt es ein Problem mit dem Zeilen-Endezeichen?

Hier etwas Code:

Code: Alles auswählen

    with fi as inf:
        for line in inf:
            line = inf.readline()
        
            
Danke für Hinweise! und bringt das with as statement hier überhaupt was?
Was soll das with denn hier bewirken?

Der ganze Code sieht komisch aus. Wenn fi eine Referenz auf eine zu Lesen geöffnete Datei ist, dann läufst du mit for line in inf doch bereits zeilenweise über die Datei. Das readline() stört dann einfach nur, bzw. sorgt dafür, dass jeweils eine Zeile übersprungen wird.

Und zum Abschluss: Was sollen die continue-Anweisungen bewirken?

Re: Problem mit readline(), nimmt nur jede 2, Zeile!

Verfasst: Dienstag 23. August 2011, 17:50
von EyDu
Hallo.

Und natürlich die durchnummerierten Namen. Wenn du so etwas hast, dann solltest du Tupel, Listen oder Dictionaries verwenden. `regex`, `fo_` `fi` und `inf` sind außerdem vollkommen nichtssagende Namen, bei den du in drei Wochen selber schon nicht mehr deren Bedeutung kennst.

Sebastian

Re: Problem mit readline(), nimmt nur jede 2, Zeile!

Verfasst: Dienstag 23. August 2011, 20:14
von BlackJack
@pytor: Zusätzlich zu meinen Vorrednern: Die regulären Ausdrücke sind gar keine beziehungsweise so trivial das man hier kein regulären Ausdrücke für bemühen muss. Ob eine Zeichenkette in einer anderen vorkommt, kann man ganz einfach mit dem ``in``-Operator testen.

Die ``with``-Anweisung sorgt dafür, dass die Datei am Ende des Blocks geschlossen wird, aber es ist eher ungewöhnlich das dort nicht das `open()` steht mit die Datei geöffnet und das Datei-Objekt erstellt wird.

Re: Problem mit readline(), nimmt nur jede 2, Zeile!

Verfasst: Freitag 2. September 2011, 12:58
von pytor
Hallo,

ich bedanke mich für die schnelle Hilfe, leider erst jetzt.
Habe aber alle Hinweise übernommen.

@/me: danke für die Klarheit. und continue, weiß ich immer noch nicht wann das Sinn macht?
@EyDu: stimmt habe die Namen etwas verdeutlicht.
@BlackJack: auch danke für die Klarheit, in Sachen with as. ab wann müssen reguläre Ausdrücke eingesetzt werden, kann man das pauschal beantworten?


Also vielen Dank

Re: Problem mit readline(), nimmt nur jede 2, Zeile!

Verfasst: Freitag 2. September 2011, 15:34
von senft
pytor hat geschrieben:ab wann müssen reguläre Ausdrücke eingesetzt werden, kann man das pauschal beantworten?
Wenn man eben nicht mehr mit Bordmitteln auskommt.
Grüße