Counter? Möchte 5 Minuten runterzählen und dabei anzeigen?

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
maximalz
User
Beiträge: 6
Registriert: Freitag 1. Mai 2015, 16:27

Hallo Leute - ich bin ein absoluter Python-DAU und habe ein kleines Python Script das im LXTerminal meines Knoppix 7.5 läuft.
Leider gibt es dort eine Wartezeit die mit dem print Befehl 'Nun 5 Minuten warten' anzeigt wird.
Aber ich würde sehr gerne immer wissen wie lange es noch dauert, also in der Zeile darunter die Zeit von 5 Minuten abwärts zählen lassen.

Hab danach verschiedens gegoole't aber nichts passendes gefunden?

Kann mir irgend jemand helfen was ich als Python Code eingeben muss um die beschriebene Funktion zu erhalten?

THX - im vorraus an alle

******************************************************************************************
Also wie seagt da ich mich mit Python nicht auskenne habe ich als erste Hilfe folgendes probiert:

den alten time.sleep(300) habe ich ersetzt durch

time.sleep(60)
print ('Noch 4 Minuten')
time.sleep(60)
print ('Noch 3 Minuten')
time.sleep(60)
print ('Noch 2 Minuten')
time.sleep(60)
print ('Noch 1 Minute')

Das ist nicht nur wenig elegant und dazu belege ich ganze 4 Zeilen die mir meine anderen Ausgaben nach oben schieben :oops:
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@maximalz: Wenn ich Dich richtig verstanden habe, willst Du nicht, dass jedesmal eine neue Zeile begonnen wird. Das kann man verhindern, indem der newline durch ein carriage-return ersetzt wird:

Code: Alles auswählen

print()
for minutes in reversed(range(1,6)):
    print('\rNoch %d Minute%s' % (minutes, 'n' if minutes!=1 else ' '), end='', flush=True)
    time.sleep(60)
print()
maximalz
User
Beiträge: 6
Registriert: Freitag 1. Mai 2015, 16:27

@Sirius3:
Danke für die schnelle Antwort, allerdings scheine ich was falsch zu machen ?
Habe Deinen Programm Code jetzt einfach kopiert und an Stelle meines Versuches rein kopiert nur bekomme ich dann sofort eine Fehlermeldung - IndentationError: expected an indented block ?

Was mache ich da falsch ?
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@maximalz: in Python ist die Einrückung wichtig. Du kannst also Zeilen nicht einfach einfügen, sondern mußt dafür sorgen, dass sie soweit eingerückt sind, dass sie mit dem umliegenden Block übereinstimmen.
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

maximalz hat geschrieben:Was mache ich da falsch ?
Eine nicht passende Einrückung solltest du eigentlich selber am besten finden können. Ohne Code können wir hier nur raten.
maximalz
User
Beiträge: 6
Registriert: Freitag 1. Mai 2015, 16:27

@Sirius3:

ich habe es nun nach besten Gewissen eingerückt, allerdings kommt nun ein neuer Fehler?

Code: Alles auswählen

	    		(doc['dateString'], doc['sgv']))
    				print()
    				for minutes in reversed(range(1,6)):
        				print('\rNoch %d Minute%s' % (minutes, 'n' if minutes!=1 else ' '), end='', flush=True)
        				time.sleep(60)
    				print()
		client.close()
	except:
		print('Fehler in der Verarbeitung neustart in 10 Sekunden')
		time.sleep(10)
Das oben gezeigte ist der Ausschnitt im Programm Code wo ich Deinen Part eingefügt habe und wo vorher der alte Teil war.
Bei dem deute ich dann mal ich habe irgendwo was falsch geschrieben --> SyntaxError: invalid syntax
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@maximalz: Kannst Du bitte einen sinnvollen Ausschnitt aus Deinem Code mit komplettem Traceback des Fehlers posten. Aus dem gezeigten läßt sich gar nichts sagen.
BlackJack

@maximalz: Dein Gewissen ist dem Compiler egal, den interessieren nur die syntaktischen Regeln von Python. ;-)

Das ”nackte” ``except:`` ohne eine konkrete Ausnahme mit der ”behandlung” der Ausnahme, die keine sinnvolle Behandlung ist, sollte so nicht sein.
maximalz
User
Beiträge: 6
Registriert: Freitag 1. Mai 2015, 16:27

@alle:

hier die Fehlermeldung die ich bekomme, leider nur als Foto via Handy

https://drive.google.com/file/d/0ByUQqT ... sp=sharing
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Welche Python-Version verwendest du eigentlich? Da du print als Funktion verwendest (mit Klammern) bin ich bisher von Python 3.x ausgegangen. Kann es sein, dass du Python 2.x einsetzt?
BlackJack

@maximalz: Kann es sein das Du Python 2 verwendest? Warum hast Du dann im ersten Beitrag die sinnfreien Klammern um die Zeichenkette bei der ``print``-*Anweisung*. In Python 2 ist das keine Funktion und hat demendsprechend auch nicht die Möglichkeiten Argumente entgegen zu nehmen. In Python 2 müsstest Du das über `sys.stdout` und dessen `write()` und `flush()`-Methode regeln, oder als ersten Import in dem Modul ``from __future__ import print_function`` schreiben, damit aus der Anweisung eine Funktion wird.
maximalz
User
Beiträge: 6
Registriert: Freitag 1. Mai 2015, 16:27

@alle:

Ja also das wusste ich nicht - SORRY - ich dachte durch die Angabe des Knoppix 7.5 würde sich die Version des Python ergeben, meine Schuld.

Kann mir jemand sagen wie ich herraus finde welche Version von Python auf meinem Knoppix läuft? Mit welchem Befehl unter Linux Terminal ?

Erledigt :oops: :oops: :oops: einfach python eingeben, na klar. Also es ist die 2.7.9 :roll:
maximalz
User
Beiträge: 6
Registriert: Freitag 1. Mai 2015, 16:27

@BlackJack: Könntest Du mir bitte die Funktion als Code so einstellen wie es Sirius3 am Anfang auch gemacht hat? Da ich mit Deinen Hinweisen alleine eine Umsetzung nicht hinbekomme :cry:
BlackJack

@maximalz: Im Grunde musst Du nur den beschriebenen `__future__`-Import an der passenden Stelle einfügen und schauen ob es dann funkioniert. In der Hoffnung dass a) die Python-Version nicht zu alt ist, und b) alle ``print``-Anweisungen in dem Modul konsequent geschrieben wurden als wäre ``print`` eine Funktion. Falls b) nicht zutrifft sollte man das aber sowieso mal vereinheitlichen.
Benutzeravatar
pixewakb
User
Beiträge: 1407
Registriert: Sonntag 24. April 2011, 19:43

Du solltest den Screenshot löschen, man kann dein Gesicht sehen.

Kann man Knoppix installieren (?), schau dir mal "andere" Distributionen an, falls du dauerhaft mit Linux arbeiten willst. Hat mich noch nicht überzeugen können (muckerte bei mir immer (!) rum und ich brauche ein jederzeit einsatzbereites Gerät) und ich brauche ein System, wo ich Windows-Software nativ einsetzen kann. Von mir daher keine Empfehlung zu Linux.

Warum verwendest du nicht IDLE? In der Shell siehst du auch direkt die Python-Version.
Antworten