Seite 1 von 2

konsole löschen

Verfasst: Donnerstag 29. Januar 2004, 17:13
von alpha
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

Re: konsole löschen

Verfasst: Sonntag 18. April 2004, 09:23
von gerold
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
:-)

konsole

Verfasst: Sonntag 18. April 2004, 12:15
von alpha
Danke für die Antwort. Werde ich gleich ml probieren

Verfasst: Sonntag 18. April 2004, 12:17
von Dookie
Hallo zusammen,

sollte es nicht auch mit

Code: Alles auswählen

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


Gruß

Dookie

Verfasst: Sonntag 18. April 2004, 12:28
von 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
:-)

Verfasst: Montag 19. April 2004, 13:51
von DER Olf
aber unter linux funkts oder was??(hab leider keine möglichkeit...)

Verfasst: Montag 19. April 2004, 18:34
von hans
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

Verfasst: Montag 19. April 2004, 18:49
von Dookie
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

Verfasst: Montag 19. April 2004, 18:53
von hans
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

Verfasst: Montag 19. April 2004, 18:59
von Dookie

Verfasst: Montag 19. April 2004, 19:39
von hans
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

Re: konsole löschen

Verfasst: Montag 29. August 2011, 08:12
von Larucio
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

Re: konsole löschen

Verfasst: Montag 29. August 2011, 08:16
von EyDu
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?

Re: konsole löschen

Verfasst: Montag 29. August 2011, 08:23
von Larucio
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

Re: konsole löschen

Verfasst: Montag 29. August 2011, 14:06
von mutetella
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

Re: konsole löschen

Verfasst: Montag 29. August 2011, 14:32
von CM
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.

Re: konsole löschen

Verfasst: Montag 29. August 2011, 14:38
von EyDu
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:

Re: konsole löschen

Verfasst: Montag 29. August 2011, 16:40
von mutetella
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...

Re: konsole löschen

Verfasst: Montag 29. August 2011, 17:54
von CM
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.

Re: konsole löschen

Verfasst: Montag 29. August 2011, 18:32
von derdon
Und warum muss shell=True sein?