Problem mit readline()

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.
Antworten
hamza.balci
User
Beiträge: 4
Registriert: Samstag 26. Januar 2019, 14:46

Hallo,
ich habe ein Problem beim Ablesen einer Textdatei. Es wird immer eine Zeile übersprungen, wenn ich den Text ausgebe.

Code: Alles auswählen

k = input()
obj = open((k), "r")
for lines in obj:
 zwl = obj.readline()
 print (zwl)
obj.close

Die Textdatei vorher:
1
2
3
4
5
6
7
Ausgegeben wird aber nur:
2

4

6

Was ist das Problem ?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das du zweimal eine Zeile liest. Die for-Schleife liefert dir doch schon eine Zeile. Du benennst die falsch mit "lines", weil das natuerlich immer nur eine Zeile ist. Aber ein simples

Code: Alles auswählen

for line in fileobj
ist alles was du brauchst.
ArtooDetoo
User
Beiträge: 60
Registriert: Dienstag 4. Dezember 2018, 16:57

Abgesehen davon, sollte man Dateien mithilfe von with öffnen ( https://www.pythonforbeginners.com/file ... -in-python ).
Benutzeravatar
__blackjack__
User
Beiträge: 14040
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@hamza.balci: Wobei Du da auch noch Glück hast das tatsächlich nur jede zweite Zeile übersprungen wird, denn der Iterator ist effizienter als `readline()` denn er kann auch mehr als nur eine Zeile lesen und zwischenspeichern, während `readline()` tatsächlich nur bis zum nächsten Zeilenende liest. Iterieren und `readline()` zu mischen ist also gar keine gute Idee.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
hamza.balci
User
Beiträge: 4
Registriert: Samstag 26. Januar 2019, 14:46

__deets__ hat geschrieben: Samstag 26. Januar 2019, 16:19 Das du zweimal eine Zeile liest. Die for-Schleife liefert dir doch schon eine Zeile. Du benennst die falsch mit "lines", weil das natuerlich immer nur eine Zeile ist. Aber ein simples

Code: Alles auswählen

for line in fileobj
ist alles was du brauchst.
Macht keinen Unterschied. Es wird trotzdem eine Zeile übersprungen.
Benutzeravatar
ThomasL
User
Beiträge: 1378
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

@hamza wie sieht denn dein Code jetzt aus?
Was erwartest du von uns, wie wir dir helfen sollen, ohne das du uns zeigst, was bei dir keinen Unterschied macht?
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wird es garantiert nicht. Bitte zeige deinen Code.
hamza.balci
User
Beiträge: 4
Registriert: Samstag 26. Januar 2019, 14:46

__deets__ hat geschrieben: Samstag 26. Januar 2019, 16:19 Das du zweimal eine Zeile liest. Die for-Schleife liefert dir doch schon eine Zeile. Du benennst die falsch mit "lines", weil das natuerlich immer nur eine Zeile ist. Aber ein simples

Code: Alles auswählen

for line in fileobj
ist alles was du brauchst.
Sorry Kommentar falsch gelesen. Hat alles geklappt. Danke !
hamza.balci
User
Beiträge: 4
Registriert: Samstag 26. Januar 2019, 14:46

Danke nochmals. Ich habe nicht erwartet, dass ihr so schnell antwortet. Wirklich sehr gutes Forum.
Antworten