Seite 1 von 1

Timer in Python: Nach X Stunden Programm beenden

Verfasst: Sonntag 15. Februar 2009, 20:33
von th30n3
Guten Tag,
ich bin ein ziemlicher Laie also Anfänger in Python. Meine erste Frage hat mit Timern zu tun.
Ich hatte mir dafür folgende Codeschnipsel bereitgestellt:

Script schließen:

Code: Alles auswählen

sys.exit(1)

Stunden in Sekunden umwandeln:

Code: Alles auswählen

seconds = eval('time*3600')
Und halt den Standart Timer-Code. Nun ist meine Frage, wie stelle ich es an, das meine Timer nach X Stunden das Script beendet?


Mfg
th30n3

(Sollte ich mich nicht deutlich genug ausgedrückt haben sagt es einfach ;))

Verfasst: Sonntag 15. Februar 2009, 20:42
von str1442
Was für Timer? Dinge aus dem Modul time?

sys.exit(1) Gibt 1 Als Rückgabewert an den Aufrufer zurück. Das deutet in aller Regel auf einen Fehler hin. 0 wäre korrekt bei einem richtig beendetem Programm. eval() brauchst du nicht und solltest du vergessen. Oder benutzt es zumindest einfach nicht.

http://docs.python.org/tutorial/index.html

Schau dir dieses Tutorial mal an. Oder

http://www.ibiblio.org/swaroopch/byteof ... on_120.pdf

wenns Deutsch sein soll.

Re: Timer in Python: Nach X Stunden Programm beenden

Verfasst: Sonntag 15. Februar 2009, 20:44
von numerix
th30n3 hat geschrieben:(Sollte ich mich nicht deutlich genug ausgedrückt haben sagt es einfach ;))
Ich sag es einfach ... :)

Verfasst: Sonntag 15. Februar 2009, 20:58
von th30n3
Nun gut, 1 mit 0 ersetzt, evals entfernt...
Jetzt gibt mir Linux folgendes aus:

Code: Alles auswählen

ValueError: I/O operation on closed file
Traceback (most recent call last):
  File "logging/__init__.py", line 737, in emit
ValueError: I/O operation on closed file

Verfasst: Sonntag 15. Februar 2009, 21:04
von Leonidas
Nutzt du denn überhaupt ``logging``?

Verfasst: Sonntag 15. Februar 2009, 21:16
von derdon
Suchst du evtl. time.sleep?

Verfasst: Sonntag 15. Februar 2009, 21:16
von numerix
th30n3 hat geschrieben:Nun gut, 1 mit 0 ersetzt, evals entfernt...
Jetzt gibt mir Linux folgendes aus:

Code: Alles auswählen

ValueError: I/O operation on closed file
Traceback (most recent call last):
  File "logging/__init__.py", line 737, in emit
ValueError: I/O operation on closed file
Du solltest vielleicht mal den Code posten, der diese Fehlermeldung produziert.

Verfasst: Sonntag 15. Februar 2009, 21:27
von th30n3
Ich weiß nicht genau ob es der ist aber:

Code: Alles auswählen

# log.py - Handler for logfiles
#
# Copyright (C) 2008 microkernel
# Author(s): microkernel (*censored*)
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later 
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, see <http://www.gnu.org/licenses/>.

import logging, sys

stdOutHandler = logging.StreamHandler(sys.stdout)
fileHandler = logging.FileHandler('log.txt', 'w')

stdOutFormat = logging.Formatter("[%(asctime)s] %(message)s", "%H:%M:%S")
fileFormat = logging.Formatter("[%(asctime)s] [%(levelname)s] %(message)s", "%H:%M:%S")

stdOutHandler.setFormatter(stdOutFormat)
fileHandler.setFormatter(fileFormat)

logger = logging.getLogger()

logger.addHandler(stdOutHandler)
logger.addHandler(fileHandler)

logger.setLevel(logging.DEBUG)

Verfasst: Sonntag 15. Februar 2009, 22:42
von numerix
th30n3 hat geschrieben:Ich weiß nicht genau ob es der ist aber:
Ich blick immer noch nicht durch: Wieso weißt du nicht, welcher Code den Fehler produziert? Das gezeigte Stück ist ja anscheinend gar nicht von dir. Geht es gar nicht um eigenen Code?

Verfasst: Sonntag 15. Februar 2009, 22:55
von hendrikS
C3PO an TH30N3

Bitte nicht StandarD mit T schreiben. Macht keinen guten Eindruck.

Sonst wuerde ich mir mal das Modul datetime angucken.
Edit:
Oder vielleicht noch besser Timer Objects. Hallo Welt Beispiel gibts in der Doku.

Verfasst: Montag 16. Februar 2009, 14:55
von th30n3
Ja, es geht tatsächlich nicht um meinen Code :)
Es geht um Opensource und ich woltle nur einen kleinen Timer einbauen damit sich das Script nach X Stunden selber schliesst.
Nun scheitert es wohl an diesm Logging. Also Code steht oben, nur wo liegt der Fehler?

Verfasst: Montag 16. Februar 2009, 22:08
von BlackJack
Der Fehler liegt wahrscheinlich in der Art und Weise wie Du das Programm beenden willst. Warum überhaupt im Programm selbst? Das würde ich eher von Aussen machen.