Neue CSV Datei in python anlegen?
Ich möchte gerne bestimmte Daten in einer CSV Datei abspeichern.
Ich habe mir aber überlegt, dass Ich gerne jedes mal, wenn das Programm startet, eine neue Datei anlegen will.
Wie schaffe Ich es, dass Ich den Dateien z.B. eine fortlaufende Nummer mit in den Namen gebe, damit keine Daten verloren gehen?
3 Antworten
Ein ganz simpler Ansatz: du packst einen Zeitstempel in den Dateinamen. Einen sekundengenauen zum Beispiel bekommst du so:
import time
timestamp=int(time.time())
dateiname="meinedatei_{}.csv".format(timestamp)
Aber du kannst es natürlich auch schöner formatieren.
Wenn ein Risiko besteht dass es zu Namenskollisionen kommt weil gleichzeitig mehrere Programme das tun, solltest du Richtung mkstemp schauen: https://docs.python.org/3.9/library/tempfile.html#tempfile.mkstemp
Die Idee mit dem Zeitstempel hatte Ich auch schon, wusste nur nicht ob das geht.
Ich denke mal, für mich wird diese Vatiante völlig ausreichend sein.
Wobei sich die Sache unter dem Link auch recht interessant anhört. :)
Ein alternativer Ansatz zu dem von alfredo153 wäre noch das Erzeugen einer UUID, welchen du an den Dateinnamen anhängst:
https://www.geeksforgeeks.org/generating-random-ids-using-uuid-python/
VG
Die ganze Idee einer UUID ist es, eindeutig zu sein. Das ist also nicht das Problem. Sie ist halt lang und unschön (und im Gegensatz zu einem Zeitstempel nichtssagend) - wenn dich das aber nicht stört ist es ein sehr robuster Ansatz.
Dateien auflisten und höchste Nummer herausfinden
Das hört sich auch interessant an. Da wir von 128 bit reden, ist es ziemlich unwahrscheinlich 2-mal den gleichen zu benutzen nehme Ich an?