Hoe de tolkconsole wissen?

Zoals de meeste Python-ontwikkelaars, houd ik meestal een consolevenster open met de Python-interpreter die wordt uitgevoerd om opdrachten te testen, dir()-dingen, help() stuff, enz.

Zoals bij elke console wordt de zichtbare achterstand van eerdere opdrachten en afdrukken na een tijdje onoverzichtelijk en soms verwarrend wanneer dezelfde opdracht meerdere keren wordt uitgevoerd. Ik vraag me af of, en hoe, de Python-interpreterconsole moet worden gewist.

Ik heb gehoord over het doen van een systeemaanroep en het aanroepen van clsop Windows of clearop Linux, maar ik hoopte dat er iets was dat ik de tolk zelf zou kunnen bevelen te doen.

Opmerking:ik gebruik Windows, dus Ctrl+Lwerkt niet.


Antwoord 1, autoriteit 100%

Zoals je al zei, kun je een systeemoproep doen:

Voor Windows:

>>> import os
>>> clear = lambda: os.system('cls')
>>> clear()

Voor Linux zou het zijn:

>>> import os
>>> clear = lambda: os.system('clear')
>>> clear()

Antwoord 2, autoriteit 43%

hier iets handigs dat iets meer platformonafhankelijk is

import os
def cls():
    os.system('cls' if os.name=='nt' else 'clear')
# now, to clear the screen
cls()

Antwoord 3, autoriteit 17%

Nou, hier is een snelle hack:

>>> clear = "\n" * 100
>>> print clear
>>> ...do some other stuff...
>>> print clear

Of om wat typen te besparen, plaats dit bestand in uw python-zoekpad:

# wiper.py
class Wipe(object):
    def __repr__(self):
        return '\n'*1000
wipe = Wipe()

Dan kun je dit vanuit de tolk doen zoals je wilt 🙂

>>> from wiper import wipe
>>> wipe
>>> wipe
>>> wipe

Antwoord 4, autoriteit 7%

Je hebt een aantal manieren om dit op Windows te doen:

1. Sneltoets gebruiken:

Press CTRL + L

2. De systeemaanroepmethode gebruiken:

import os
cls = lambda: os.system('cls')
cls()

3. 100 keer nieuwe regel afdrukken:

cls = lambda: print('\n'*100)
cls()

5, Autoriteit 5%

Dit is het eenvoudigste dat je kunt doen en het vereist geen extra bibliotheken. Het zal het scherm wissen en terugkeren >>>naar de linkerbovenhoek.

print("\033[H\033[J", end="")

UPDATE: Toegevoegd extra parameter end=""volgens commentaar door Adam Jenča om te voorkomen dat het nieuwe lijnteken wordt afgedrukt en nu retourneert het >>>naar de Echt top linker hoek.


6, Autoriteit 5%

De snelste en gemakkelijkste manier zonder twijfel is CTRL + L .

Dit is hetzelfde voor OS X op de terminal.


7, Autoriteit 3%

Mijn manier om dit te doen is om een ​​functie als SO te schrijven:

import os
import subprocess
def clear():
    if os.name in ('nt','dos'):
        subprocess.call("cls")
    elif os.name in ('linux','osx','posix'):
        subprocess.call("clear")
    else:
        print("\n") * 120

Bel vervolgens clear()om het scherm te wissen.
Dit werkt op Windows, OSX, Linux, BSD ... Alle OSES.


8, Autoriteit 2%

Hier is een crossplatform (Windows / Linux / Mac / Waarschijnlijk anderen die u kunt toevoegen in de IF-cheque) Versie FIPPET I Made Combining Informatie gevonden in deze vraag:

import os
clear = lambda: os.system('cls' if os.name=='nt' else 'clear')
clear()

hetzelfde idee, maar met een lepel syntactische suiker:

import subprocess   
clear = lambda: subprocess.call('cls||clear', shell=True)
clear()

Antwoord 9, autoriteit 2%

De perfecte cls:

cls = lambda: print("\033c\033[3J", end='')
cls()

Of direct:

print("\033c\033[3J", end='')

Antwoord 10, autoriteit 2%

Wiper is cool, het goede eraan is dat ik er geen '()' omheen hoef te typen.
Hier is een kleine variatie op

# wiper.py
import os
class Cls(object):
    def __repr__(self):
        os.system('cls')
        return ''

Het gebruik is vrij eenvoudig:

>>> cls = Cls()
>>> cls # this will clear console.

Antwoord 11, autoriteit 2%

voor de mac-gebruiker binnen het type python-console

import os
os.system('clear')

voor ramen

os.system('cls')

Antwoord 12

Ik weet niet zeker of de "shell" van Windows dit ondersteunt, maar op Linux:

print "\033[2J"

https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes

Naar mijn mening is het in het algemeen een slecht idee om clste bellen met os. Stel je voor dat het me lukt om de opdracht cls of clear op je systeem te wijzigen, en je voert je script uit als admin of root.


Antwoord 13

Hier is de definitieve oplossing die alle andere antwoorden samenvoegt. Kenmerken:

  1. U kunt kopiëren-plakken de code in uw shell of script.
  2. U kunt Gebruik het zoals u wilt:

    >>> clear()
    >>> -clear
    >>> clear  # <- but this will only work on a shell
    
  3. U kunt import IT als een module:

    >>> from clear import clear
    >>> -clear
    
  4. U kunt bel it als een script:

    $ python clear.py
    
  5. Het is echt multiplatform ; Als het je systeem niet kan herkennen
    (ce, nt, dosOF posix) Het valt terug naar het afdrukken van lege regels.


U kunt hier het [FULL-bestand downloaden: https://gist.github.com/3130325
Of als u alleen op zoek bent naar de code:

class clear:
 def __call__(self):
  import os
  if os.name==('ce','nt','dos'): os.system('cls')
  elif os.name=='posix': os.system('clear')
  else: print('\n'*120)
 def __neg__(self): self()
 def __repr__(self):
  self();return ''
clear=clear()

14

Ik gebruik iter en de inheemse terminal-app voor Mac OS.

Ik druk gewoon op ⌘ + k


15

Gebruik inactief. Het heeft veel handige functies. CTRL + F6 Reset bijvoorbeeld de console. Sluiten en openen van de console zijn goede manieren om het op te ruimen.


16

Als u het niet door code hoeft te doen, drukt u op CTRL + L


17

De eenvoudigste manier is om OS-module

te gebruiken

>>> import os
>>> clear = lambda: os.system('clear')
>>> clear()

18

Ik gebruik MingW / bash op Windows XP, SP3.

(Plak dit in .pythonstartup)
# Mijn ctrl-l al werkte al, maar dit kan iemand anders helpen
# verlaat snel aan de onderkant van het raam ...
import lezen van
Readline.parse_and_bind ('\ C-L: helder scherm')

# dit werkt in bash omdat ik het ook in .inputrc heb, maar voor sommigen
# reden waarom het wordt gedaald als ik in Python ga
Readline.parse_and_bind ('\ C-Y: kill-whole-line')


Ik kon niet meer uit het typen van 'exit ()' en was blij met de trucs van Martineau / Triptych:

Ik heb het enigszins ontdekt (stopte het in .pythonstartup)

class exxxit():
    """Shortcut for exit() function, use 'x' now"""
    quit_now = exit # original object
    def __repr__(self):
        self.quit_now() # call original
x = exxxit()

Py2.7.1>help(x)
Help on instance of exxxit in module __main__:
class exxxit
 |  Shortcut for exit() function, use 'x' now
 |
 |  Methods defined here:
 |
 |  __repr__(self)
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  quit_now = Use exit() or Ctrl-Z plus Return to exit

Antwoord 19

Het OS-commando clearin Linux en clsin Windows voert een "magische string" uit die u gewoon kunt afdrukken. Om de string te krijgen, voer je het commando uit met popen en sla je het op in een variabele voor later gebruik:

from os import popen
with popen('clear') as f:
    clear = f.read()
print clear

Op mijn computer is de string '\x1b[H\x1b[2J'.


Antwoord 20

Ik ben nieuw in python (echt heel nieuw) en in een van de boeken die ik lees om kennis te maken met de taal die ze leren, hoe je deze kleine functie kunt maken om de console te wissen van de zichtbare achterstand en eerdere opdrachten en afdrukken:

Shell openen / Nieuw document maken / Functie als volgt maken:

def clear():
    print('\n' * 50)

Sla het op in de lib-map in je python-map (de mijne is C:\Python33\Lib)
De volgende keer dat u uw console wilt wissen, roept u de functie gewoon aan met:

clear()

dat is het.
PS: je kunt je functie een naam geven zoals je wilt. Ik heb mensen gezien die "wiper" "wipe" en variaties gebruiken.


Antwoord 21

Hier zijn twee leuke manieren om dat te doen:

1.

import os
# Clear Windows command prompt.
if (os.name in ('ce', 'nt', 'dos')):
    os.system('cls')
# Clear the Linux terminal.
elif ('posix' in os.name):
    os.system('clear')

2.

import os
def clear():
    if os.name == 'posix':
        os.system('clear')
    elif os.name in ('ce', 'nt', 'dos'):
        os.system('cls')
clear()

Antwoord 22

Gewoon invoeren

import os
os.system('cls') # Windows
os.system('clear') # Linux, Unix, Mac OS X

Antwoord 23

Als het op mac is, zou een simpele cmd + kvoldoende moeten zijn.


Antwoord 24

Arch Linux (getest in xfce4-terminalmet Python 3):

# Clear or wipe console (terminal):
# Use: clear() or wipe()
import os
def clear():
    os.system('clear')
def wipe():
    os.system("clear && printf '\e[3J'")

... toegevoegd aan ~/.pythonrc

  • clear()wist scherm
  • wipe()wist de volledige terminalbuffer

Antwoord 25

EDIT: ik heb zojuist "windows" gelezen, dit is voor linux-gebruikers, sorry.


In bash:

#!/bin/bash
while [ "0" == "0" ]; do
    clear
    $@
    while [ "$input" == "" ]; do
        read -p "Do you want to quit? (y/n): " -n 1 -e input
        if [ "$input" == "y" ]; then
            exit 1
        elif [ "$input" == "n" ]; then
            echo "Ok, keep working ;)"
        fi
    done
    input=""
done

Sla het op als "whatyouwant.sh", chmod +x het en voer het volgende uit:

./whatyouwant.sh python

of iets anders dan python (inactief, wat dan ook).
Dit zal je vragen of je echt wilt afsluiten, zo niet, voer python dan opnieuw uit (of het commando dat je als parameter hebt gegeven).

Hiermee worden alles, het scherm en alle variabelen/objecten/alles dat u in python hebt gemaakt/geïmporteerd, gewist.

Typ in Python gewoon exit() als je wilt afsluiten.


Antwoord 26

Dit moet platformoverschrijdend zijn en gebruikt ook de voorkeurs subprocess.callin plaats van os.systemvolgens de os.system-documenten. Zou moeten werken in Python >= 2.4.

import subprocess
import os
if os.name == 'nt':
    def clearscreen():
        subprocess.call("cls", shell=True)
        return
else:
    def clearscreen():
        subprocess.call("clear", shell=True)
        return

Antwoord 27

Wat dacht je hiervan voor een duidelijke

- os.system('cls')

Dat is zo kort als maar kan!


Antwoord 28

Ik ontdekte dat de eenvoudigste manier is om gewoon het venster te sluiten en een module/script uit te voeren om de shell opnieuw te openen.


Antwoord 29

>>> ' '*80*25

UPDATE: 80x25 is waarschijnlijk niet zo groot als consolevensters, dus om de echte console-afmetingen te krijgen, gebruikt u functies van pager-module. Python biedt niets vergelijkbaars van kerndistributie.

>>> from pager import getheight
>>> '\n' * getheight()

Other episodes