Anfängerfrage zu Zeitintervallen

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.
Sephiroth
User
Beiträge: 28
Registriert: Freitag 3. November 2006, 00:12

Donnerstag 8. März 2007, 01:35

Meine Empfehlung .. starte dein Scripte (wenn es sich um Consolen-Scripte handelt) immer aus einer Eingabeaufforderung, Shell, etc. herraus.

Dort sollten dann u.a. auch Fehler angezeigt werden und Du kannst das Script mit "STRG + C" (oder auch STRG+Pause für ProzessKick) unter Windows beenden.
Gibt es dafür ein tut?
Unter Linux weiß ich es, aber windows ist mir in manchen sachen nciht so vertraut....


Gruss
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Donnerstag 8. März 2007, 14:39

In welchem Ordner ist dein Skript?...

Start --> Ausführen --> "CMD" eingeben --> dort in den Ordner wechseln...

Wenn es beispielsweise auf dem Desktop ist, brauchst du nur "CD Desktop" einzugeben, wenn es auf "D:" ist, brauchst du nur "D:" einzugeben....

Und dann dort einfach den Namen des Skripts eingeben, musst nichtmal umbedingt "python" davor eingeben.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 8. März 2007, 18:53

Sephiroth hat geschrieben:Gibt es dafür ein tut?
Ja, in den [wiki]FAQ#WieStarteIchSkripte[/wiki].
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Sephiroth
User
Beiträge: 28
Registriert: Freitag 3. November 2006, 00:12

Donnerstag 8. März 2007, 22:51

Danke an: Leonidas; BlackVivi; Masaru und den rest.. :D
Läuft alles prima!!!!

Thread kann daher closed wenn das ein mod sieht.

Zusammenfassend für leute die ein ähnliches Problem haben/hatten wie ich:

Code: Alles auswählen

import time
weiter = True
inp=open('log.txt','a')
while weiter: 
    time.sleep(3)        
    inp.write(time.strftime('%d.%m.%Y %H:%M:%S'))
    inp.write('\n')
    inp.flush()
Das hier funktioniert wunderbar, und mit strg+c abbrechen.


Gruss
BlackJack

Donnerstag 8. März 2007, 23:40

Noch ein paar Anmerkungen: `weiter` wird nicht wirklich gebraucht, da kann man gleich ``while True:`` schreiben.

Der Name für das Dateiobjekt ist ein wenig irreführend ─ ich muss bei `inp` jedenfalls an eine Abkürzung für *Input* denken.

Das Zeilenendezeichen kann man auch gleich in die Formatierungszeichenkette von `time.strftime()` einbauen.
PmanX
User
Beiträge: 123
Registriert: Donnerstag 25. Januar 2007, 13:50
Wohnort: Germany.BB.LOS
Kontaktdaten:

Freitag 9. März 2007, 00:19

Unter Unix hätte ich ein touch Datei alle x Minuten per Cron gestartet :)
Mit Wintendo bin ich überfragt.

Gruß P.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Freitag 9. März 2007, 11:44

Abbruch nach tastendruck mit WConio:

Code: Alles auswählen

import WConio

while True:
    if WConio.kbhit(): break
http://newcenturycomputers.net/projects/wconio.html


oder kompletter code:

Code: Alles auswählen

import time, WConio

inp=open('log.txt','a')
while not WConio.kbhit():
    time.sleep(3)       
    inp.write(time.strftime('%d.%m.%Y %H:%M:%S'))
    inp.write('\n')
    inp.flush()

wobei ich hier die "3" und "log.txt" duch variablen ersetzten würde:

Code: Alles auswählen

import time, WConio

def time_to_file(filename = "log.txt", interval = 3):
   f = open(filename, 'a')
   while not WConio.kbhit():
      time.sleep(interval)       
      f.write(time.strftime('%d.%m.%Y %H:%M:%S\n'))
      f.flush()

BlackJack

Freitag 9. März 2007, 12:31

@PmanX: Unter Unix/Linux bräuchte man sicher kein eigenes Programm zum loggen, sondern könnte eine vorhandene Logdatei auswerten. Zum Beispiel `/var/log/messages`:

Code: Alles auswählen

Mar  9 09:32:37 s8n syslogd 1.4.1#17ubuntu7: restart.
Mar  9 09:52:38 s8n -- MARK --
Mar  9 10:12:38 s8n -- MARK --
Wie man an dem Ausschnitt sieht, wird hier mindestens alle 20 Minuten ein Eintrag geschrieben. Das Intervall kann man sicher irgendwo einstellen, so das alle 3 Minuten ein Eintrag dort steht.
PmanX
User
Beiträge: 123
Registriert: Donnerstag 25. Januar 2007, 13:50
Wohnort: Germany.BB.LOS
Kontaktdaten:

Freitag 9. März 2007, 13:03

BlackJack hat geschrieben:@PmanX: Unter Unix/Linux bräuchte man sicher kein eigenes Programm zum loggen, sondern könnte eine vorhandene Logdatei auswerten. Zum Beispiel `/var/log/messages`:

Code: Alles auswählen

Mar  9 09:32:37 s8n syslogd 1.4.1#17ubuntu7: restart.
Mar  9 09:52:38 s8n -- MARK --
Mar  9 10:12:38 s8n -- MARK --
Wie man an dem Ausschnitt sieht, wird hier mindestens alle 20 Minuten ein Eintrag geschrieben. Das Intervall kann man sicher irgendwo einstellen, so das alle 3 Minuten ein Eintrag dort steht.
Diese Marken mag nicht jeder ;) Wenn ich nicht irre, ist der syslogd verantwortlich. Ob das ohne Cron funktioniert, bin ich nicht sicher. EDIT: Unter W$ sollte man auch loggen können. Edit2: Ich mag touch Datei, ist praktisch Wartungsfrei :!:
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 9. März 2007, 16:48

PmanX hat geschrieben:Ich mag touch Datei, ist praktisch Wartungsfrei :!:
Ich kann mich nicht erinnern, jemals meinen syslogd warten zu müssen. Es hat bisher jedes Mal out-of-the-Box funktioniert. ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
PmanX
User
Beiträge: 123
Registriert: Donnerstag 25. Januar 2007, 13:50
Wohnort: Germany.BB.LOS
Kontaktdaten:

Freitag 9. März 2007, 19:05

Aber nur, wenn logrotate out of the blue funktioniert ;)
Antworten