Seite 1 von 1

Csv.Writer in einer for-schleife

Verfasst: Dienstag 16. November 2021, 08:41
von _corn_
Hallo Zusammen,

ich melde mich mal wieder :o . Mein "Problem" sieht folgendermaßen aus:

Code: Alles auswählen

for zeile in reader:
	if zeile[1] in data:
		with open ('Datei.csv', 'w', encoding='utf-8', newline='') as csv_schreiben:
			writer = csv.writer(csv_schreiben, dialect='excel')
			writer.writerow(["Geht])
			
	else:
		print(zeile[1])
		print("Fehler: Nicht in der Liste gefunden")
Die For- und If-Schleife funktioniert prinzipiell so, wie ich es mir vorstelle, jedoch schreibt er beim writer nur einmal die Zeile "Geht" statt für jeden Schleifendurchgang "Geht". Wenn ich das gleiche mit Print mache, funktioniert es jedoch und in der Console wird für jede Zeile ein "Geht" ausgegeben, nur nicht beim writer. Wo liegt hier der Fehler oder was kann ich machen, damit der Writer für jede Zeile ein "einzelnes" geht ausgibt.
Ich hoffe Ihr versteht das Problem. Ich würde mich extrem über Antworten freuen :D .
LG Corn

Re: Csv.Writer in einer for-schleife

Verfasst: Dienstag 16. November 2021, 08:47
von einfachTobi
Dieser Code ist ohnehin nicht läuffähig, weil SyntaxError und NameError. Wie ist `reader` definiert? Wie ist `data` definiert? Wie sehen die csv-Dateien aus? Poste den Code, den du tatsächlich laufen lässt und nicht irgendwas aus dem Gedächtnis abgetipptes.
Neben diesen grundsätzlichen Problemen öffnest du die Datei eben immer wieder im 'write'-Modus, was dazu führt, dass sie überschrieben wird. Schau dir den 'append'-Modus für das Öffnen an: https://docs.python.org/3/library/functions.html#open.

Re: Csv.Writer in einer for-schleife

Verfasst: Dienstag 16. November 2021, 08:48
von _corn_
Mir ist gerade das Grundlegende Problem selber aufgefallen, also brauch ich nur noch einen Lösungsweg dafür. Der Csv-Writer überschreibt bei jeden durchlauf die erste Zeile, sodass nur noch der letzte durchlauf "stehen bleibt". Wie kann ich Ihm sagen, dass er bei 2ten durchlauf in der 2ten Reihe schreiben soll?

Vielen dank und LG Corn

Re: Csv.Writer in einer for-schleife

Verfasst: Dienstag 16. November 2021, 08:49
von _corn_
Danke @einfachTobi. Ist mir gerade selber aufgefallen. LG

Re: Csv.Writer in einer for-schleife

Verfasst: Dienstag 16. November 2021, 09:43
von Sirius3
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
Die Lösung ist, nicht immer wieder die neu zu öffnen, sondern nur einmal.

Code: Alles auswählen

with open('Datei.csv', 'w', encoding='utf-8', newline='') as csv_schreiben:
    writer = csv.writer(csv_schreiben, dialect='excel')
    for zeile in reader:
        if zeile[1] in data:
            writer.writerow(["Geht"])
        else:
            print(zeile[1])
            print("Fehler: Nicht in der Liste gefunden")

Re: Csv.Writer in einer for-schleife

Verfasst: Dienstag 16. November 2021, 10:21
von _corn_
Vielen Dank @Sirius3