Python nimmt Variablen nicht bei CSV Erstellung an

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
FelixGoesPython
User
Beiträge: 17
Registriert: Mittwoch 25. September 2019, 08:15

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')
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@ 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.
When we say computer, we mean the electronic computer.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

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])
FelixGoesPython
User
Beiträge: 17
Registriert: Mittwoch 25. September 2019, 08:15

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?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sollte keinen Unterschied machen. Was heißt denn instabil genau?
Antworten