konsole löschen

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.
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Hallo,

gibt es in python einen Befehl mit dem man die konsole
(Windows und Linux) löschen kann. So was alla ClearScreen?
Einzelne Zeilen geht wohl unter Windows gar nicht, da es
kein funktionierendes ncurses modul gibt, oder?

Gruß
alpha
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alpha hat geschrieben:gibt es in python einen Befehl mit dem man die konsole
(Windows und Linux) löschen kann.
Hallo alpha!
Probier es doch mal hiermit:

Code: Alles auswählen

import os, sys
try:
    s = sys.winver
    os.system("cls")
except:
    os.system("clear")
Du kannst es aber auch auf die "Harte Tour" :roll: probieren:

Code: Alles auswählen

import os
try:
    os.system("cls")
    os.system("clear")
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Danke für die Antwort. Werde ich gleich ml probieren
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hallo zusammen,

sollte es nicht auch mit

Code: Alles auswählen

print "\x1b[2J"
gehen, unter Linux gehts, was macht Windows?


Gruß

Dookie
Gast

Dookie hat geschrieben:sollte es nicht auch mit

Code: Alles auswählen

print "\x1b[2J"
gehen, unter Linux gehts, was macht Windows?
Hallo Dookie!

Habe es gerade unter Windows ausprobiert --> funktioniert leider nicht :(

mfg
Gerold
:-)
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

aber unter linux funkts oder was??(hab leider keine möglichkeit...)
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

DER Olf hat geschrieben:aber unter linux funkts oder was??
Jein

Bildschirm wird gelöscht, aber der Cursor wird nicht oben links plaziert. Damit es funktioniert, muss m. E. $TERM entsprechend definiert sein. Rufst du konsole auf ist $TERM xterm, bei einem ASCII Bildschirm ist das z. B. linux. Das sind meine Einstellungen (Fedora Core 1), kann auf anderen Systemen anders sein.

Klartextbefehle sind mir da lieber, auch wenn ich die nach OS unterscheiden muß.

Hans
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

unter Windows sollte \f gehen, zumindest hat das immer unter Dos funktioniert.

Unter Linux müsste man noch den Cursor mit einer weiteren escapesequence in die erste Zeile setzen.


Gruß

Dookie
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Dookie hat geschrieben:Unter Linux müsste man noch den Cursor mit einer weiteren escapesequence in die erste Zeile setzen.
Wo finde ich die ESC Sequenzen eigentlich? terminfo, termcap waren leider nicht sehr aussagekräftig (oder ich habs übersehen).

Hans
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

hmmm, sehr interessant.

Code: Alles auswählen

ESC[97;"Hallo"p  	belegt die Taste 'a' mit dem String "Hallo"
ESC[100;"dir /p";13p 	belegt die Taste 'd' mit dem String "dir /p" und einem abschließenden Enter.
Ob ich das meinem Chef mal in die Startroutine einbaue :roll:

THX
Hans
Larucio
User
Beiträge: 3
Registriert: Freitag 12. August 2011, 17:28

Bei mir kommt folgende Fehlermeldung, wenn ich die Datei kompiliere, bei der ich den Bildschirm löschen will:

Code: Alles auswählen

Sorry: IndentationError: unexpected unindent (SpielXY.py, line 8)
Das ist der Code

Code: Alles auswählen

import os
def BildLeeren():
	try:
		os.system("cls")
		os.system("clear")

print("SpielXY\n")
print("-----Menü-----\n")
print("1. Starten")
print("2. Hilfe")
print("3. Info")
print("4. Beenden")

MenüAuswahl = input("Wählen sie aus: ")
BildLeeren()
Was mache ich falsch? Ich verwende Python3 unter Windows
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Alle Achtung, da hast du aber ganz tief in der Geschichte des Boards gegraben. Ich gebe dir mal einen Hinweis: Welcher Teil fehlt dir zu einem vollständigen try-except-Konstrukt?
Das Leben ist wie ein Tennisball.
Larucio
User
Beiträge: 3
Registriert: Freitag 12. August 2011, 17:28

EyDu hat geschrieben:Alle Achtung, da hast du aber ganz tief in der Geschichte des Boards gegraben. Ich gebe dir mal einen Hinweis: Welcher Teil fehlt dir zu einem vollständigen try-except-Konstrukt?
Google hilft ;) Und Python ist ja immernoch das selbe.

Habe es so abgeändert:

Code: Alles auswählen

def BildLeeren():
	try:
		os.system("clear")	# Unix
	except:
		os.system("cls")	# Windows
Aber der Bildschirm wird noch nicht gelöscht? Was mach ich falsch?

Danke
MfG
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hallo,

mit Deinem 'try:.. except:..'-Konstrukt möchtest Du ja erreichen, dass, wenn 'os.system('clear')' nicht funktioniert (eine exception wirft), 'os.system('cls')' aufgerufen wird.
Das Problem dabei ist allerdings, dass 'os.system('clear')' keine exception wirft. Du versuchst also, eine exception abzufangen, die nicht kommen wird. Genaugenommen versuchst Du, alle exceptions abzufangen. Es wird trotzdem keine kommen... :wink:
Lies mal die Doku zu os.system.

Zudem halte ich es für wenig optimal, den Bildschirm auf diese Weise zu löschen. Warum verwendest Du nicht das curses-Modul?

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Larucio hat geschrieben:Aber der Bildschirm wird noch nicht gelöscht? Was mach ich falsch?
Unter anderem denken, daß sich bei Python nichts getan hat. Inzwischen gibt es nämlich das subprocess-Modul. Keine Ahnung, was Gerold bei seinem Beispiel geritten hat.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

CM hat geschrieben:Keine Ahnung, was Gerold bei seinem Beispiel geritten hat.
Vielleicht, dass 2.4 erst sechs Monate nach seinem Beitrag erschienen ist? Nur so eine Vermutung :wink:
Das Leben ist wie ein Tennisball.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Egal, ob mit os- oder subprocess-Modul: Ich wüsste nicht, wie man in diesem Fall mit 'try:..except:..' weiterkommt...

Es geht doch nicht darum, eine exception abzufangen, sondern das, was vom OS-Befehl zurückgegeben wird:

Code: Alles auswählen

import subprocess

def clear_screen():
    if subprocess.call('cls', shell=True) > 0:
        subprocess.call('clear', shell=True)
mutetella


EDIT: Meine Anmerkung zum curses-Modul war Blödsinn, da Du ja unter Windows arbeitest.
Allerdings könntest Du Dir mal Console anschauen. Ist ja vielleicht interessant...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

EyDu hat geschrieben:Vielleicht, dass 2.4 erst sechs Monate nach seinem Beitrag erschienen ist? Nur so eine Vermutung :wink:
Auch mit 2.4 wird try/except keine Lösung gewesen sein. ;-)

mutetellas Lösung finde ich gut. subprocess.call() oder .check_call() erlauben auch das Verwenden von try/except-Konstrukten, bei mir zumindest gibt subprocess.call('cls') einen OSError. Sauberer und schöner scheint mir aber mutetellas Lösung, auch wenn try/except im allgemeinen pythonischer ist.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Und warum muss shell=True sein?
Antworten