Vergiss erstmal dass es global überhaupt gibt. Alles was eine Funktion braucht, bekommt sie über ihre Argumente.
Eingerückt wird immer mit 4 Leerzeichen pro Ebene. Benutze niemals Tabs.
Strings stückelt man nicht mit + zusammen, sondern benutzt Formatstrings. Aber zum Schreiben von csv-Dateien benutzt man sowieso das csv-Modul.
Nackte excepts oder sys.exit haben in einem sauberen Programm nichts verloren. `d` ist ein sehr schlechter Name für ein Fileobjekt, weil es keine Aussagekraft hat. Außerdem ist es sehr schlecht, das Du global die Datei öffnest, aber irgendwo verschachtelt in einer Funktion wieder schließt.
Wenn Du eine eindeutige ID brauchst, dann mußt Du erst die Datei lesen, und nach der größten ID suchen.
Code: Alles auswählen
import csv
DATEN_FILENAME = "daten.csv"
def add_shoe():
marke =input("Welche Marke?")
modell = input("Welcher Schuh und Colorway?")
datum = input("Wann gekauft?")
preis = input("Preis?")
size = input("Größe?")
since_price = input("Sell für ...€/ Hold seit ...?")
add_to_file(marke, modell, datum, preis, size, since_price)
def add_to_file(marke, modell, datum, preis, size, since_price):
with open(DATEN_FILENAME, newline='\n') as lines:
entries = csv.reader(lines)
max_id = max(int(entry[-1]) for entry in entries)
with open(DATEN_FILENAME, mode='a', newline='\n') as output:
output_csv = csv.writer(output)
output.csv.write([marke, modell, datum, preis, size, since_price, max_id+1])