Datum als String zurück in Datum

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
Antik
User
Beiträge: 16
Registriert: Mittwoch 6. Februar 2019, 07:58

Hallo,
Ich habe folgendes Problem: Ich schreibe Daten in eine CSV Datei. Dabei ist auch ein Zeitstempel. Später möchte ich den Zeitstempel wieder aufrufen und herausfinden wie viel zeit seit dem vergangen ist. Das Problem ist, dass der Zeitstempel dann an String ist und ich nicht mit Ihm weiterarbeiten kann.

So schreibe ich in die CSV Datei

def schreibeCSV(name):
try:
d = open(name, "a")
except:
print("Dateizugriff nicht erfolgreich")
li=[x, datetime.datetime.now()]
d.write(str(li[0])+";"+str(li[1])+"\n")
d.close()

Ich möchte also anschließend die Zeit wieder auslesen und mit der aktuellen zeit vergleichen. Dabei habe ich mir folgendes gedacht:

t1=datetime.datetimenow()
t2="hier dann die ausgelesene Zeit"
delta = t2-t1
time=delta.seconds

das funktioniert allerdings nicht, da ich natürlich nicht mit einem string rechnen kann
Sirius3
User
Beiträge: 17830
Registriert: Sonntag 21. Oktober 2012, 17:20

Zum Schreiben von csv-Dateien benutzt man das csv-Modul. Das exception-Handling ist kaputt, denn wenn der Zugriff nicht erfolgreich war, dann ist auch der Schreibversuch nicht erfolgreich; ergo, wenn man einen Fehler nicht sinnvoll behandeln kann, sollte man ihn gar nicht behandeln.
Variablennamen sollten etwas aussagen, also nicht einbuchstabig sein, name ist genauer gesagt ein dateiname. `x` kommt aus dem Nichts in die Funktion, das muß aber ein Parameter sein.
Es kommt also etwa soetwas raus:

Code: Alles auswählen

def schreibe_csv(filename, x):
    with open(filename, 'a') as output:
        output = csv.writer(output, delimiter=';')
        output.write([x, datetime.datetime.now()])
Beim Lesen mußt Du die Zeit wieder parsen, z.b. mit dateutil.parser.parse
Benutzeravatar
__blackjack__
User
Beiträge: 13242
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Oder `datetime.datetime.strptime()`. Und bei der Berechnung der vergangenen Zeit solltest man `total_seconds` statt `seconds` verwenden, sonst kann es sein das nicht alle Sekunden berücksichtigt sind/werden.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Antik
User
Beiträge: 16
Registriert: Mittwoch 6. Februar 2019, 07:58

__blackjack__ hat geschrieben: Mittwoch 6. Februar 2019, 11:52 Oder `datetime.datetime.strptime()`. Und bei der Berechnung der vergangenen Zeit solltest man `total_seconds` statt `seconds` verwenden, sonst kann es sein das nicht alle Sekunden berücksichtigt sind/werden.
danke habe es auch gerade so gelöst. Bin neu hier und weiß nicht wie man das Problem als gelöst einträgt oder das Thema löscht
Antik
User
Beiträge: 16
Registriert: Mittwoch 6. Februar 2019, 07:58

__blackjack__ hat geschrieben: Mittwoch 6. Februar 2019, 11:52 Oder `datetime.datetime.strptime()`. Und bei der Berechnung der vergangenen Zeit solltest man `total_seconds` statt `seconds` verwenden, sonst kann es sein das nicht alle Sekunden berücksichtigt sind/werden.
danke habe es auch gerade so gelöst. Bin neu hier und weiß nicht wie man das Problem als gelöst einträgt oder das Thema löscht
Antworten