Datei öffnen und mehrmals in for Schleife bringen.

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
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Ich stoße gerade auf ein Problem, welches ich jetzt nicht so erwartet habe.
Ich möchte eine Datei lesend öffnen und mit 2 for-schleifen die Sache durchlaufen.

Jetzt ein Beispiel:

Code: Alles auswählen

with open("/myfile") as file:
	datei = csv.reader(file)
	appen = []
	for i in datei:
		appen.append(i)
	print(appen)
	
	for two in datei:
		print(two)
Das geht so nicht, also er gibt mir "two" nicht aus.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@egon11: Das geht nicht weil der Dateizeiger ans Ende wandert und da auch bleibt. Da Du die Daten aber in `appen` hast, ist das doch auch gar nicht nötig noch einmal die Daten aus der Datei zu lesen und zu parsen. Das dauert doch nur unnötig lange.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

warum durchläufst du die Datei nicht 1x und rufst dann aus der for-Schleife aus zwei Funktionen auf, die was mit `i` machen?

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Die Namen sind teilweise nicht gut und das einlesen in eine Liste kann man deutlich kürzer schreiben:

Code: Alles auswählen

import csv

with open('data.csv') as csv_file:
    rows = list(csv.reader(csv_file))
print(rows)

for row in rows:
    print(row)
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Hat mir weiter geholfen danke.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__blackjack__ hat geschrieben: Donnerstag 3. Januar 2019, 18:40 Die Namen sind teilweise nicht gut und das einlesen in eine Liste kann man deutlich kürzer schreiben:

Code: Alles auswählen

import csv

with open('data.csv') as csv_file:
    rows = list(csv.reader(csv_file))
print(rows)

for row in rows:
    print(row)
Mal ne Frage: ist

Code: Alles auswählen

with open('data.csv') as csv_file:
    rows = list(csv.reader(csv_file))
print(rows)
das Selbe wie

Code: Alles auswählen

csv_file = open('data.csv)
rows = list(csv.reader(csv_file))
print(rows)
oder gibt's 'nen Unterschied?
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hast du dir mal die Mühe gemacht nachzuschlagen, was das with Schlüsselwort macht? Das beantwortet dann auch deine Frage....
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Habe ich gerade und meine Frage sollte nun dadurch geklärt sein. ^^
Antworten