Seite 1 von 1

Datei öffnen und mehrmals in for Schleife bringen.

Verfasst: Donnerstag 3. Januar 2019, 18:01
von egon11
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.

Re: Datei öffnen und mehrmals in for Schleife bringen.

Verfasst: Donnerstag 3. Januar 2019, 18:07
von __blackjack__
@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.

Re: Datei öffnen und mehrmals in for Schleife bringen.

Verfasst: Donnerstag 3. Januar 2019, 18:23
von noisefloor
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

Re: Datei öffnen und mehrmals in for Schleife bringen.

Verfasst: Donnerstag 3. Januar 2019, 18:40
von __blackjack__
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)

Re: Datei öffnen und mehrmals in for Schleife bringen.

Verfasst: Donnerstag 3. Januar 2019, 18:47
von egon11
Hat mir weiter geholfen danke.

Re: Datei öffnen und mehrmals in for Schleife bringen.

Verfasst: Donnerstag 3. Januar 2019, 22:37
von xXSkyWalkerXx1
__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?

Re: Datei öffnen und mehrmals in for Schleife bringen.

Verfasst: Donnerstag 3. Januar 2019, 22:56
von __deets__
Hast du dir mal die Mühe gemacht nachzuschlagen, was das with Schlüsselwort macht? Das beantwortet dann auch deine Frage....

Re: Datei öffnen und mehrmals in for Schleife bringen.

Verfasst: Donnerstag 3. Januar 2019, 23:07
von xXSkyWalkerXx1
Habe ich gerade und meine Frage sollte nun dadurch geklärt sein. ^^