Jak wyczyścić konsolę interpretera?

Jak większość programistów Pythona, zazwyczaj trzymam otwarte okno konsoli z interpreterem Pythona działającym w celu testowania poleceń, dir (), help() itp.

Jak każda konsola, po pewnym czasie widoczne zaległości poprzednich poleceń i wydruków stają się zaśmiecone, a czasami mylące podczas wielokrotnego uruchamiania tego samego polecenia. Zastanawiam się czy i jak wyczyścić konsolę interpretera Pythona.

Słyszałem o wywołaniu systemowym i albo wywołaniu cls Na Windows lub clear na Linuksie, ale miałem nadzieję, że jest coś, do czego mógłbym rozkazać samemu interpreterowi.

Uwaga: używam Windowsa, więc Ctrl + L nie działa.

Author: martineau, 2009-02-06

30 answers

Jak już wspomniałeś, możesz wykonać wywołanie systemowe:

Dla Windows

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

Dla Linuksa lambda staje się

>>> clear = lambda: os.system('clear')
 317
Author: Ryan Duffield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 17:02:56

Tutaj coś przydatnego, co jest trochę bardziej wieloplatformowe

import os

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

# now, to clear the screen
cls()
 157
Author: popcnt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-21 09:55:54

Oto szybki hack:

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

Lub aby zapisać typowanie, umieść ten plik w ścieżce wyszukiwania Pythona:

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

wipe = Wipe()

Wtedy możesz to zrobić z tłumacza ile chcesz:)

>>> from wiper import wipe
>>> wipe
>>> wipe
>>> wipe
 78
Author: Triptych,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-05 21:29:52

Chociaż jest to starsze pytanie, pomyślałem, że dodam coś podsumowującego to, co myślę, że było najlepsze z innych odpowiedzi i dodam własne zmarszczki, sugerując, że umieściłeś te polecenia w pliku i ustawiłeś zmienną środowiskową PYTHONSTARTUP, aby wskazywała na to. Ponieważ jestem na Windows w tej chwili, to jest nieco stronniczy w ten sposób, ale można łatwo pochylić w innym kierunku.

Oto kilka artykułów, które znalazłem, które opisują, jak ustawić zmienne środowiskowe na Windows:
    Kiedy używać sys./ align = "left" / dodawać i przy modyfikowaniu % PYTHONPATH % wystarczy
    Jak zarządzać zmiennymi środowiskowymi w Windows XP
    Konfiguracja zmiennych środowiskowych Systemu i Użytkownika
     Jak używać globalnych zmiennych systemowych w systemie Windows

BTW, nie umieszczaj cudzysłowów wokół ścieżki do pliku, nawet jeśli zawiera spacje.

Tak czy siak, oto moje zdanie na temat kodu do wstawienia (lub Dodaj do istniejącego skryptu startowego Pythona:

# ==== pythonstartup.py ====

# add something to clear the screen
class cls(object):
    def __repr__(self):
        import os
        os.system('cls' if os.name == 'nt' else 'clear')
        return ''

cls = cls()

# ==== end pythonstartup.py ====

BTW, możesz też użyć @ tryptyku __repr__ trick to change exit() into just exit (and ditto for its alias quit):

class exit(object):
    exit = exit # original object
    def __repr__(self):
        self.exit() # call original
        return ''

quit = exit = exit()

Na koniec jest jeszcze coś, co zmienia główny znak zachęty interpretera z >>> na +>>>:

class Prompt:
    def __str__(self):
        import os
        return '%s >>> ' % os.getcwd()

import sys
sys.ps1 = Prompt()
del sys
del Prompt
 27
Author: martineau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:27

Masz wiele sposobów, aby to zrobić w Windows:

1. Użycie skrótu klawiaturowego:

Press CTRL + L

2. Użycie metody wywołania systemu:

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

3. Użycie nowej linii Drukuj 100 razy:

cls = lambda: print('\n'*100)
cls()
 16
Author: Vlad Bezden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-20 14:46:29

Najszybszym i najłatwiejszym sposobem bez wątpienia jest Ctrl+L .

To samo dotyczy OS X na terminalu.

 14
Author: Alex K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-28 21:32:00

Moim sposobem na to jest napisanie takiej funkcji:

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

Następnie wywołaj clear(), aby wyczyścić ekran. działa to na systemach windows, osx, linux, bsd... wszystkie osy.

 10
Author: MartinUbuntu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-18 15:22:07

Wiper jest fajny, dobrze, że nie muszę wpisywać '()' wokół niego. Oto mała zmiana

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

Użycie jest dość proste:

>>> cls = Cls()
>>> cls # this will clear console.
 7
Author: Amol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-09 08:57:46

Oto ostateczne rozwiązanie , które łączy wszystkie inne odpowiedzi. Cechy:

  1. Możesz skopiować i wkleić kod do powłoki lub skryptu.
  2. Możesz używać jak chcesz:

    >>> clear()
    >>> -clear
    >>> clear  # <- but this will only work on a shell
    
  3. Możesz zaimportować jako moduł:

    >>> from clear import clear
    >>> -clear
    
  4. Możesz wywołać jako skrypt:

    $ python clear.py
    
  5. Jest prawdziwie wieloplatformowa ; jeśli nie potrafi rozpoznać twojego system
    (ce, nt, dos lub posix) powróci do drukowania pustych linii.


Możesz pobrać [pełny] plik tutaj: https://gist.github.com/3130325
Lub jeśli po prostu szukasz kodu:

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()
 5
Author: Alba Mendez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-06 12:52:16

Użyj bezczynności. Posiada wiele przydatnych funkcji. Ctrl + F6 , na przykład, resetuje konsolę. Zamknięcie i otwarcie konsoli to dobre sposoby na jej wyczyszczenie.

 4
Author: S.Lott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-11 23:36:15

Używam iTerm i natywnej aplikacji terminalowej dla Mac OS.

Wciskam ⌘ + k

 4
Author: Jorge E. Hernández,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-16 13:48:41

Nie jestem pewien, czy "Powłoka" systemu Windows obsługuje to, ale na Linuksie:

print "\033[2J"

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

Moim zdaniem połączenie cls z os jest ogólnie złym pomysłem. Wyobraź sobie, że uda mi się zmienić polecenie cls lub clear w Twoim systemie, a Ty uruchomisz skrypt jako admin lub root.

 3
Author: Peter G. Marczis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-28 21:32:01

Używam MINGW / BASH na Windows XP, SP3.

(Włóż to .pythonstartup)
# Mój ctrl-l już działa, ale to może komuś pomóc
# pozostawia znak zachęty na dole okna...
import readline
readline.parse_and_bind ('\C-L: clear-screen')

# to działa w BASH ' u, bo mam go winputrc również, ale dla niektórych
# reason it gets dropped when I go into Python
readline.parse_and_bind ('\c-y: kill-whole-line')


Nie mogłem już znieść wpisywania 'exit ()' i byłem zachwycony trikami martineau/tryptyku:

Trochę to sfałszowałem (wcisnąłem .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
 2
Author: AAAfarmclub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-08 21:57:30

Oto dwa dobre sposoby na to:

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()
 2
Author: userend,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-28 14:12:14

Oto fragment wersji cross platform (Windows / Linux / Mac / prawdopodobnie inne), który zrobiłem łącząc informacje znalezione w tym pytaniu:

import os
clear = lambda: os.system('cls' if os.name=='nt' else 'clear')
clear()
 2
Author: Pitto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-31 10:45:00

Co powiesz na to, żeby było jasne

- os.system('cls')
To jest tak krótkie, jak to tylko możliwe!
 1
Author: Dennis Kean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-02 21:56:20

Polecenie systemu operacyjnego clear w Linuksie i cls W Windows wyświetla "magiczny ciąg", który możesz po prostu wydrukować. Aby uzyskać ciąg znaków, wykonaj polecenie z popen i zapisz go w zmiennej do późniejszego użycia:

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

print clear

Na mojej maszynie ciąg jest '\x1b[H\x1b[2J'.

 1
Author: larsr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-11 11:19:25

Jestem nowy w Pythonie (naprawdę naprawdę nowy) i w jednej z książek, które czytam, aby zapoznać się z językiem, którego uczą, jak stworzyć tę małą funkcję, aby wyczyścić konsolę widocznych zaległości i przeszłych poleceń i wydruków:

Otwórz powłokę / Utwórz nowy dokument / Utwórz funkcję w następujący sposób:

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

Zapisz go w folderze lib w Twoim katalogu Pythona (mój jest C:\Python33\Lib) Następnym razem, gdy wyczyścisz konsolę, po prostu wywołaj funkcję z:

clear()
To wszystko. PS: możesz nazwać swoją funkcję tak, jak chcesz. IV 'widziano ludzi za pomocą "wiper ""wipe" i wariacje.
 1
Author: Adriana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-25 20:00:24

Odkryłem, że najprostszym sposobem jest zamknięcie okna i uruchomienie modułu / skryptu, aby ponownie otworzyć powłokę.

 1
Author: Seymour,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-17 10:00:57

Użyj tego..

print '\n'*1000

 1
Author: user1474157,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-19 06:15:17

Mogę się spóźnić do części, ale tutaj jest bardzo łatwy sposób, aby to zrobić

Typ:

def cls():
    os.system("cls")

Więc co chcesz wyczyścić ekran po prostu wpisz swój kod

cls()

Najlepszy możliwy sposób! (Kredyt: https://www.youtube.com/watch?annotation_id=annotation_3770292585&feature=iv&src_vid=bguKhMnvmb8&v=LtGEp9c6Z-U)

 1
Author: stallion093,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-17 00:05:00

EDIT: Właśnie przeczytałem "windows", To jest dla użytkowników Linuksa, przepraszam.


W 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

Zapisz jako "whatyouwant.sh", chmod +x następnie uruchom:

./whatyouwant.sh python

Lub coś innego niż python (idle, whatever). To zapyta cię, czy rzeczywiście chcesz wyjść, jeśli nie to ponownie uruchom Pythona (lub polecenie, które podałeś jako parametr).

To wyczyści wszystko, ekran i wszystkie zmienne / obiekt / wszystko, co utworzyłeś / zaimportowałeś w Pythonie.

W Pythonie wystarczy wpisać exit() kiedy chcesz wyjść.

 0
Author: Andrea Ambu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-05 23:51:51

Powinno to być cross platform, a także używa preferowanego subprocess.call zamiast os.system zgodnie z os.system docs. Powinno działać w Pythonie >= 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
 0
Author: Acorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-20 14:51:23

OK, więc jest to znacznie mniej techniczna odpowiedź, ale używam wtyczki Pythona do Notepad++ i okazuje się, że możesz po prostu wyczyścić konsolę ręcznie, klikając prawym przyciskiem myszy na niej i klikając "Wyczyść". Mam nadzieję, że to komuś pomoże!

 0
Author: guest12345,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-08 21:24:28
>>> ' '*80*25

Aktualizacja: Rozmiar 80x25 jest mało prawdopodobny, więc aby uzyskać rzeczywiste wymiary konsoli, użyj funkcji z modułu pager . Python nie dostarcza niczego podobnego z dystrybucji core.

>>> from pager import getheight
>>> '\n' * getheight()
 0
Author: anatoly techtonik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-30 04:48:37

Magiczne łańcuchy są wymienione powyżej - myślę, że pochodzą z bazy terminfo:

Http://www.google.com/?q=x#q=terminfo

Http://www.google.com/?q=x#q=tput + command + in + unix

$ tput clear / od-T x1z 0000000 1B 5b 48 1B 5b 32 4a >.[H. [2j

 0
Author: tput-guest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-18 21:54:03

Używam Spyder (Python 2.7) i do czyszczenia konsoli interpretera używam albo

%clear

To wymusza przejście linii poleceń do góry i nie będę widział poprzednich starych poleceń.

Lub klikam "option" w środowisku konsoli i wybieram "Restart kernel", który usuwa wszystko.

 0
Author: Youness,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-08 16:35:45

Wystarczy wpisać

import os
os.system('cls') # Windows
os.system('clear') # Linux, Unix, Mac OS X
 0
Author: Anynomous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-10 22:00:09

Jest to najprostsza rzecz, jaką możesz zrobić i nie wymaga żadnych dodatkowych bibliotek. Oczyści ekran i powróci >>> do lewego górnego rogu.

print("\033[H\033[J")
 0
Author: Denis Rasulev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-28 06:54:38

Najprostszy sposób ` > > > import os

Clear = lambda: os.system ("clear") clear`) "

 0
Author: Bhaskar Mishra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 06:17:04