Seite 1 von 1

Datei mit Zeitstempeln erzeugen.

Verfasst: Mittwoch 5. Februar 2014, 22:34
von Goldrausch
Es geht um ein Raspberry Pi Projekt, ich habe einen AD-Wandler welcher jede Sekunde eine Spannugswert ausließt. Der wert wir hier in eine txt. Datei geschrieben und ständig Überschrieben:

Code: Alles auswählen

print readAnalogData
f=open ("voltCH0.txt" "w"); 
print f 



nun möchte ich, das die Datei nicht überschrieben wird, sondern dass die einzelnen Werte mit ein einem Zeitstempel versehen werden. Wie muss hier das Python Skript aussehen ? (Entschuldigung, das ich frage, ich bin totaler Neuling im Bereich Programmieren)

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Mittwoch 5. Februar 2014, 23:04
von EyDu
Hallo,

in deinem Beispiel wird nichts in eine Datei geschrieben. Hast du schon das Standardtutorial oder alternativ dieses hier durchgearbeitet? Arbeiten mit Dateien sind Grundlagen.

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 14:42
von Goldrausch
So, ich habe es jetzt geschaft, ein Skript zu schreiben welches das Datum in eine Datei schreibt.

Code: Alles auswählen

#!/usr/bin/python

import time
from time import*

lt =localtime ()

jahr, monat, tag = lt [0:3]
print "Datum: %02i,%02i%04i" % (tag,monat,jahr)

f =open("time.txt", "w");
print f
value = "Datum: %02i,%02i%04i" % (tag,monat,jahr)
myString = str (value)
f.write(my String)

- Was ich jedoch nicht hin bekomme ist, das das Skript jede Sekunde die Datei abc.txt ausliest und dazu das Datum schreibt.

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

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 15:30
von N317V
Schreiben schaffst Du, dann schaffst Du auch... das andere. ;-) Wie könnte denn eine Funktion heißen, die das Gegenteil von "write" macht?

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 15:42
von Sirius3
@Goldrausch: Was ist denn das für ein krankes Datumsformat? Es vereint alle Nachteile in einem: man erkennt nicht, dass es sich um ein Datum handelt, falls doch ist es schwer lesbar und sortieren kann man es auch nicht.
»value« ist schon ein String, die »myString«-Zeile ist also unsinnig. »time« wird importiert aber nicht benutzt, der Sternchenimport dagegen ist schlechter Stil. Wenn Du das datetime-Modul verwendest, hast Du auch eine schöne Formatiersyntax.

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 16:31
von cofi
Wie Sirius3 schon sagte, mit `datetime` tut man sich da mehr einen groesseren Gefallen. So schoen wie es bei dem Format werden kann:

Code: Alles auswählen

In [4]: datetime.date.today().strftime("Datum: %d,%m%y")
Out[4]: 'Datum: 07,0214'
Wie man das jetzt von "Monat,Jahr", "Tag des Jahres,Jahr" etc unterscheiden koennen soll ist mir aber auch ein Raetsel.

Und wie das immer so ist, gibt es auch einen Standard fuer Daten:

Code: Alles auswählen

In [5]: datetime.date.today().isoformat()
Out[5]: '2014-02-07'

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 19:43
von Goldrausch
So ich habe jetzt was neues ausprobiert, jedoch wird kein wert in die Datei time.txt geschrieben:
wo liegt der Fehler ?

Code: Alles auswählen

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)

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 19:49
von anogayales
Goldrausch hat geschrieben:

Code: Alles auswählen

with open('time.txt,'ab') as output:
    output.write, ("%s\t%s\n % time.time()", value)
Das Komma hat da nichts zu suchen und die Anführungszeichen hast du auch falsch gesetzt. Wenn ich raten müsste, würde ich sagen, dass folgender Aufruf richtig ist.

Code: Alles auswählen

with open('time.txt,'ab') as output:
    output.write("%s\t%s\n" % (time.time(), value))
PS: Wenn du python code postet, dann setzte diesen bitte auch in python tags. Das macht das Lesen wesentlich angenehmer.

Grüße,
anogayales

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 20:03
von Goldrausch
Super das funktioniert. :P

jedoch gefällt mir der Zeitstempel nicht.
Das Datum wird wie folgt dargestellt: 1391796273.62 gibt es nicht eine schönere Möglichkeit, welche auch entzifferbar ist ?

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 20:51
von cofi
Nochmal: Es gibt das `datetime` Modul. Je nachdem was du haben willst, solltest du dir `datetime.date` oder `datetime.datetime` anschauen.

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 22:15
von Goldrausch
Wenn ich das wie folgt mache, kommt die Fehlermeldung:
TypeError: Required argument "year" (pos 1) not found

Code: Alles auswählen

    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)


Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 22:50
von BlackJack
@Goldrausch: Ganz sicher nicht, denn das ist keine gültige Python-Syntax. Vielleicht solltest Du weniger rumraten sondern einfach mal die Dokumentation lesen, verstehen, und dann Anwenden.

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 7. Februar 2014, 22:51
von cofi
Und wie kommst du auf die Idee, dass es so funktionieren wuerde?

Weiter oben im Thread hatte ich schon ein Beispiel gepostet und die Dokumentation sagt zur formatierung folgendes: http://docs.python.org/2/library/dateti ... e.__format__

Re: Datei mit Zeitstempeln erzeugen.

Verfasst: Freitag 11. April 2014, 14:10
von DeaD_EyE
Ich würde es so machen:

Code: Alles auswählen

str_from_time_now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
Wenn du das unbedingt so änhlich wie in deinem Beispiel machen willst, dann schau dir die Beispeile an: https://docs.python.org/2/library/strin ... t-examples

Code: Alles auswählen

dt = datetime.datetime.now()
>>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'
Methode 1 sieht aber besser aus.