Timer in Python: Nach X Stunden Programm beenden

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
th30n3
User
Beiträge: 4
Registriert: Sonntag 15. Februar 2009, 20:26

Sonntag 15. Februar 2009, 20:33

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 ;))
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Sonntag 15. Februar 2009, 20:42

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Sonntag 15. Februar 2009, 20:44

th30n3 hat geschrieben:(Sollte ich mich nicht deutlich genug ausgedrückt haben sagt es einfach ;))
Ich sag es einfach ... :)
th30n3
User
Beiträge: 4
Registriert: Sonntag 15. Februar 2009, 20:26

Sonntag 15. Februar 2009, 20:58

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
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 15. Februar 2009, 21:04

Nutzt du denn überhaupt ``logging``?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Sonntag 15. Februar 2009, 21:16

Suchst du evtl. time.sleep?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Sonntag 15. Februar 2009, 21:16

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.
th30n3
User
Beiträge: 4
Registriert: Sonntag 15. Februar 2009, 20:26

Sonntag 15. Februar 2009, 21:27

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)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Sonntag 15. Februar 2009, 22:42

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?
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Sonntag 15. Februar 2009, 22:55

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.
th30n3
User
Beiträge: 4
Registriert: Sonntag 15. Februar 2009, 20:26

Montag 16. Februar 2009, 14:55

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?
BlackJack

Montag 16. Februar 2009, 22:08

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.
Antworten