if Abfrage und Systemzeit Sekunden

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    bin Anfänger und habe ein Problem mit einer If Abfrage. Nach längerer Suche im Netz und verschiedenen versuchen von anderen Codes konnte ich den Fehler bzw. das Problem nicht finden.

    Ich möchte alle 30 Sekunden Daten in eine Datei schreiben. Also zweimal pro Minute bei hh:mm:00 und hh:mm:30.
    Nun ist das Problem das ich bei der If Abfrage kein positives Ergebnis bekomme in Phyton3.

    Hier ein Teilabschnitt des Codes:

    import sys
    import os
    from time import *
    import time

    zeit=time.strftime("%S")
    zeit=int(zeit)

    while True:
    if (zeit==30) or (zeit==00):
    #Daten schreiben
    else:
    #nichts

    Folgende Meldung erscheint:

    Value Error: invalid literal for int() with base 10: '48%'

    Kann mir einer von euch unterstützen, mit einem Beispiel oder mir meinen Fehler aufzeigen.

    Vielen Dank

    • Offizieller Beitrag

    Zuerst solltest du die Zeit auch innerhalb der Schleife aktualisieren ;). Und dann würde ich das einfach mittels eines 30 sekündigen sleep lösen

    Code
    while True:
        #mach irgendwas
        #schreib daten
        time.sleep(30)
    • Offizieller Beitrag

    Nicht wenn das in einen anderen Thread/Prozess auslagert ;)

    Änder mal das 00 auf 0, denn 00 ist keine gültige Zahl. Wie do oben siehst passiert dann sowas, da er einfach irre schnell durch die Schleife ratter. Auf jeden Fall muss dann noch ein Sleep mit rein, damit das auch sinnvoll funktioniert.

    Code
    >>> while True:
    ...  z = time.strftime("%S")
    ...  if int(z) == 30 or int(z) == 0:
    ...   print "30 sek sind rum"
    ...   time.sleep(1)
  • habe ein neues script geöffnet und dein Programm mit meinem vereint und plötzlich geht es.
    Vielen Dank. Die Ursache werde ich noch suchen. Aber ich habe schonmal zwei Anfängerfehler drin: ö und ß dürfen auch in Kommentaren nicht verwendet werden. Ich hoffe ich finde noch den anderen Grund.

    Vielen Dank.[/color]


  • Nach einigen Tests hab ich die Schleife dann doch lieber in die Crontab gelegt, da ich sonst die ganze Zeit 100% CPU last hatte.

    Genau das sollte man auch vorziehen -> so wenig wie möglich permanent im Hintergrund laufende Sachen (Programme oder Scripts) und solche Regelmäßigkeiten lieber über Crontab regeln. Solche sleep's halten das Script nur auf, also es wird quasi auf die Bremse getreten und erst danach gehts weiter..

    Allerdings ist es - wie dbv auch indirekt anmerkte(?) - seltsam das ausgerechnet das bei dir 100% CPU Last erzeugt haben soll... ich würde eher etwas anderes ermuten, oder einen Fehler im Script, oder du hast uns nicht dein vollständiges Script gezeigt ;)

  • Ja, genau. Starte deine Skripte mit

    Python
    #!/usr/bin/python
    # -*- coding: utf-8 -*-

    Python3 arbeitet übrigens standardmäßig mit UTF-8. Ein weiteres Problem kann der Editor sein. Wenn du dein Skript beispielsweise mit dem Windows Editor erstellst, und dann auf den Pi ziehst, kann es sein, dass die Datei im DOS-Format ist (Zeilenumbrüche und so sind dann anders kodiert). Öffne die Datei dann auf dem Pi

    Code
    nano filename

    Wenn dann "(Converted from DOS format)" da steht, ist schlecht. Einfach die Datei mit nano speichern (STRG+O) und mit ALT+D in Standardformat umwandeln.
    Viele Grüße

    Einmal editiert, zuletzt von KrawallKurt (19. Juni 2014 um 17:37)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!