Seite 1 von 1

Python nimmt Variablen nicht bei CSV Erstellung an

Verfasst: Donnerstag 3. Oktober 2019, 18:43
von FelixGoesPython
Hallo Zusammen,

ich schreibe eine Anwendung bei der ein neues CSV File erstellt wird. In dieses CSV Feld sollen, Variablen rein, jedoch nimmt er die nicht an. Anstatt den Inhalt der Variable

Code: Alles auswählen

varName = Julia
also Julia zu übernehmen, schreibt er
varName
in die CSV Datei.

Der Code unten zeigt: Python soll anhand der Kalenderwoche und Jahreszahl einen Dateinamen zusammensetzen. Besteht diese Datei schon soll er in dieses CSV eine Zeile einfügen. Besteht die Datei nicht soll er sie erstellen und die Zeile mit den Überschriften einfügen.

Code: Alles auswählen

#Formel für Kalenderwoche die auch zum Jahreswechsel richtig funktioniert

from datetime import date                                         
dt = date.today()                            
dateiname = f"Vorgaenge/{dt.strftime('%g%V')}.csv"


varName='Julia'
varAbteilung='Geschäftskunden'
varGehalt='100000'


from pathlib import Path

my_file = Path(dateiname)
if my_file.is_file():
    with open(dateiname, mode='a') as employee_file:
        employee_file.write( 'varName; varAbteilung; varGehalt\n')
else:
    with open(dateiname, mode='a') as employee_file:
        employee_file.write( 'Name;Abteilung;Gehalt\n')
        employee_file.write( 'varName;varAbteilung;varGehalt\n')

Re: Python nimmt Variablen nicht bei CSV Erstellung an

Verfasst: Donnerstag 3. Oktober 2019, 18:50
von sls
@ FelixGoesPython:

weiter oben im Skript verwendest du einen Format-String um das Datum dynamisch abzugreifen. Wenn du den Inhalt deiner Variablen auch in die Datei schreibst, warum machst du das dann plötzlich anders? Python *weiß* nicht automagisch, ob es tatsächlich "varName bla die blub" schreiben, oder f"{varName} bla die blub" schreiben soll. Das musst du schon mitteilen.

varName ist übrigens ein übler Variablenbezeichner.

Re: Python nimmt Variablen nicht bei CSV Erstellung an

Verfasst: Donnerstag 3. Oktober 2019, 19:03
von Sirius3
Importe gehören alle an den Anfang der Datei. Wenn Du csv-Dateien schrieben willst, dann benutze das csv-Modul. Das my_-Präfix ist überflüssig, weil es keinen Mehrwert liefert. Ebensowenig das Suffix var.
Vermeide doppelten Code. Textdateien sollten immer mit explizitem Encoding geöffnet werden.

Code: Alles auswählen

from datetime import date                                         
from pathlib import Path
import csv

today = date.today()                            
filename = Path('Vorgaenge') / f"{today:%g%V}.csv"

name = 'Julia'
abteilung = 'Geschäftskunden'
gehalt = 100000

need_header = not filename.is_file()
with open(filename, mode='a', encoding="utf-8") as employee_file:
    output = csv.writer(employee_file, delimiter=";")
    if need_header:
        output.writerow(['Name', 'Abteilung', 'Gehalt'])
    output.writerow([name, abteilung, gehalt])

Re: Python nimmt Variablen nicht bei CSV Erstellung an

Verfasst: Donnerstag 3. Oktober 2019, 21:11
von FelixGoesPython
Wow, vielen Dank.

In meinem PyCharm läuft das ganz gut. Allerdings funktioniert es in Anaconda nicht so gut. Kann es sein das PyCharm stabiler ist. Ich benutze einen Mac. Wechsel aber bald wieder auf Windows. Mir welche Python Programmen arbeitet ihr so?

Re: Python nimmt Variablen nicht bei CSV Erstellung an

Verfasst: Donnerstag 3. Oktober 2019, 21:29
von __deets__
Das sollte keinen Unterschied machen. Was heißt denn instabil genau?