Forum: PC-Programmierung Python: Daten mit Zeitstempel in eine Datei Schreiben


von Der Gast (Gast)


Lesenswert?

Es geht um ein Raspberry Projekt ich habe ein AD Wandler welcher jede 
Sekunde ausgelesen wird, der Wert wird dann in eine Datei geschrieben, 
und ständig überschrieben (Die Datei wird dann von einem Programm 
ausgelesen und erstellt ein Diagramm)

Nun möchte ich die Werte in eine Datei mit einem Zeitstempel schreiben.

Also es soll in etwa wie folgt aussehen: lese jede Sekunde die Datei 
abc.txt aus und schreibe den Wert mit einem Zeitstempel in die Datei 
time.txt

wie müsste hier das Python Skript aussehen ?

von jibi (Gast)


Lesenswert?

>der Wert wird dann in eine Datei geschrieben,
>und ständig überschrieben (Die Datei wird dann von einem Programm
>ausgelesen und erstellt ein Diagramm)

Wenn die Datei auf einem Flash-Speicher gespeichert ist, könnte das 
sekündliche Beschreiben jenes Speichers die Lebenserwartung doch arg 
verkürzen. Kann sein, dass ein gutes OS das Puffert, sicher bin ich mir 
aber nicht. Der Umweg über die Datei scheint mir keine geeignete Methode 
zu sein. Mal über eine Datenbank nachgedacht, oder die Daten direkt zu 
verarbeiten?

Gruß Jonas

von Florian F. (flof3000)


Lesenswert?

import time
while True:
  with open('abc.txt', 'rb') as input:
    value = input.read()
  with open('time.txt,'ab') as output:
    output.write("%s\t%s\n" % time.time(), value)
  time.sleep(1)


Oder natuerlich schicker formatieren, statt einem Unix Zeitcode...

von Der Gast (Gast)


Lesenswert?

@ Florian F erstmal Danke für deine Hilfe jedoch stimmt etwas mit dem 
Skript nicht, wenn ich es ausführen will kommt folgende Meldung:

File "Dateiname.py", line 9 in <module>
   output.write("%s\t%s\n" % time.time(), value)
TypeError:not enough arguments for format string

von jibi (Gast)


Lesenswert?

da fehlt ein Komma...

von jibi (Gast)


Lesenswert?

nee, sorry der Gänsefuss ist nicht weit genug gelaufen...
muss hinter die Klammer von ...time()

gruß jonas

von jibi (Gast)


Lesenswert?

nee, jetzt eine Kombi aus beiden + da fehlt noch was

von Der Gast (Gast)


Lesenswert?

ich habe die Zeile jetzt so da stehen:

output.write, ("%s\t%s\n % time.time()", value)

jetzt kommt zwar keine Fehlermeldung, jedoch bleibt die Datei time.txt
in dem die Werte und der Zeitstempel rein geschrieben werden soll leer.

von Kaj (Gast)


Lesenswert?

Der Gast schrieb:
> jedoch bleibt die Datei time.txt
> in dem die Werte und der Zeitstempel rein geschrieben werden soll leer
Ach, das wundert dich?
Die Datei wird ja auch nicht geschlossen, und damit wird auch nichts 
geschrieben.

Der Gast schrieb:
> jedoch stimmt etwas mit dem
> Skript nicht

Der Gast schrieb:
> Nun möchte ich die Werte in eine Datei mit einem Zeitstempel schreiben.
Der Gast schrieb:
> wie müsste hier das Python Skript aussehen ?

"Ich hab hier ein Projekt, will aber nichts dafür tun. Macht ihr das mal 
für mich..."

von Der Gast (Gast)


Lesenswert?

ich habe nun folgendes Python Skript:

    import datetime

    while True:
      with open('abc.txt', 'rb') as input:
        value = input.read()
      with open('time.txt,'ab') as output:
      output.write, ("%Y-%m-%d %H:%M:%S" % datetime.datetime(), value)
    time.sleep(1)

Es kommt jedoch folgende Fehlermeldung:
TypeError: Required argument "year" (pos 1) not found
Was ist nun falsch ?

von tuple (Gast)


Lesenswert?

Der Gast schrieb:
> output.write, ("%Y-%m-%d %H:%M:%S" % datetime.datetime(), value)
> Was ist nun falsch ?

Da ist so ziemlich alles falsch dran.
Es könnte z. B. so aussehen:

output.write("%s %s" % (datetime.datetime.now(), value))

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.