Tylko krótkie pytanie:
jak wyczyścić ekran w powłoce? Widziałem sposoby takie jak:
import os
os.system('cls')
To tylko otwiera okno cmd, czyści ekran i zamyka, ale chcę, aby okno powłoki zostało wyczyszczone
(PS: nie wiem, że to pomaga, ale używam wersji 3.3.2 Pythona)
Dziękuję :)
Odpowiedzi:
W przypadku systemu macOS / OS X można użyć modułu podprocesu i wywołać „cls” z powłoki:
import subprocess as sp sp.call('cls', shell=True)
Aby zapobiec wyświetlaniu „0” w górnej części okna, zamień drugą linię na:
tmp = sp.call('cls', shell=True)
W systemie Linux musisz zamienić
cls
polecenie naclear
tmp = sp.call('clear', shell=True)
źródło
import subprocess as sp sp.call('clear',shell=True)
co działa, z wyjątkiem tego, że0
u góry okna terminala znajduje się.ctrl+L
sp.call('cls', shell=True);
A co ze skrótem CTRL+ L?
Działa dla wszystkich powłok, np. Python, Bash, MySQL, MATLAB itp.
źródło
import os os.system('cls') # For Windows os.system('clear') # For Linux/OS X
źródło
os.system('clear')
dla terminali Mac OS X (potwierdzono, że działa z domyślną powłokąbash
, a także dlacsh
).To, czego szukasz, można znaleźć w module curses.
to znaczy
import curses # Get the module stdscr = curses.initscr() # initialise it stdscr.clear() # Clear the screen
Ważna uwaga
Ważną rzeczą do zapamiętania jest to, że przed każdym wyjściem musisz zresetować terminal do normalnego trybu, można to zrobić za pomocą następujących linii:
curses.nocbreak() stdscr.keypad(0) curses.echo() curses.endwin()
Jeśli tego nie zrobisz, będziesz miał wszelkiego rodzaju dziwne zachowania. Aby mieć pewność, że tak jest zawsze, sugerowałbym użycie modułu atexit, na przykład:
import atexit @atexit.register def goodbye(): """ Reset terminal from curses mode on exit """ curses.nocbreak() if stdscr: stdscr.keypad(0) curses.echo() curses.endwin()
Prawdopodobnie nieźle się nada.
źródło
stdscr = curses.initscr()
działa czyści ekran,stdscr.clear()
ale nic nie robi. Używając Pythona 3.4,stdscr = curses.initscr()
czyści ekran, ale odbiera terminalowi zdolność przetwarzania znaków nowej linii. Kiedy kilkakrotnie naciskam Enter, daje to:>>> >>> >>> >>>
i tak dalej. Nadal mogę wpisywać polecenia, ale się nie pojawiają. To zachowanie utrzymuje się nawet wtedy, gdy używamexit()
języka Python. UNIKAĆ UŻYCIA!curses
moduł może mieć problemy ze zgodnością (Windows, Mac, Linux)? Mogę potwierdzić, że ten problem występuje przynajmniej na dwóch różnych terminalach Mac. To zachowanie utrzymuje się w BASH, ale nie w CSH. Hmm ... Myślisz, że powinienem skontaktować się z twórcą curses, twórcą powłoki, czy po prostu zapytać społeczność SO? Dzięki jeszcze raz!Oto kilka opcji, których możesz użyć w systemie Windows
Pierwsza opcja:
import os cls = lambda: os.system('cls') >>> cls()
Druga opcja:
cls = lambda: print('\n' * 100) >>> cls()
Trzecia opcja, jeśli jesteś w oknie Python REPL:
źródło
Oprócz tego, że jest wszechstronną, świetną biblioteką CLI,
click
zapewnia również funkcję niezależną od platformyclear()
:import click click.clear()
źródło
Ta funkcja działa w każdym systemie operacyjnym (Unix, Linux, macOS i Windows)
Python 2 i Python 3
import platform # For getting the operating system name import subprocess # For executing a shell command def clear_screen(): """ Clears the terminal screen. """ # Clear command as function of OS command = "cls" if platform.system().lower()=="windows" else "clear" # Action return subprocess.call(command) == 0
W systemie Windows polecenie to
cls
, w systemach typu unix polecenie toclear
.platform.system()
zwraca nazwę platformy. Dawny.'Darwin'
dla macOS.subprocess.call()
wykonuje wywołanie systemowe. Dawny.subprocess.call(['ls','-l'])
źródło
Łatwiejszym sposobem na wyczyszczenie ekranu w Pythonie jest użycie Ctrl+, Lchociaż działa to zarówno dla powłoki, jak i innych programów.
źródło
Jeśli używasz terminala linux do uzyskania dostępu do Pythona, to cntrl + l jest najlepszym rozwiązaniem do wyczyszczenia ekranu
źródło
Używam klasy, która po prostu używa jednej z powyższych metod za kulisami ... Zauważyłem, że działa na Windows i Linux ... Jednak lubię jej używać, ponieważ łatwiej jest wpisać clear () zamiast system ('clear' ) lub os.system ('clear')
pip3 install clear-screen from clear_screen import clear
a następnie, gdy chcesz wyczyścić powłokę:
clear()
źródło
używając Windows 10 i pyhton3.5 przetestowałem wiele kodów i nic nie pomogło mi bardziej niż to:
Najpierw zdefiniuj prostą funkcję, ta funkcja wypisze 50 nowych linii; (liczba 50 będzie zależała od tego, ile linii możesz zobaczyć na ekranie, więc możesz zmienić tę liczbę)
def cls(): print ("\n" * 50)
potem po prostu dzwoń tyle razy, ile chcesz lub potrzebujesz
cls()
źródło
Command+K
działa dobrze w OSX, aby wyczyścić ekran.Shift+Command+K
aby wyczyścić tylko bufor przewijania.źródło
import curses stdscr = curses.initscr() stdscr.clear()
źródło
Podproces umożliwia wywołanie „cls” dla Shell.
import subprocess cls = subprocess.call('cls',shell=True)
To jest tak proste, jak tylko mogę. Mam nadzieję, że to działa dla Ciebie!
źródło
możesz użyć systemu Windows lub Linux Os
import os os.system('cls') os.system('clear')
możesz użyć modułu podprocesu
import subprocess as sp x=sp.call('cls',shell=True)
źródło
os.system('cls')
działa dobrze, gdy je otwieram. Otwiera się w stylu cmd.źródło
Zamiast importować wszystkie przekleństwa lub strzelać tylko po to, aby uzyskać jeden znak sterujący, możesz po prostu użyć (w systemie Linux / macOS):
print(chr(27) + "[2J")
(Źródło: Clear terminal w Pythonie )
źródło
Oto jak stworzyć własne polecenie
cls
lubclear
polecenie, które będzie działać bez jawnego wywoływania żadnej funkcji!Wykorzystamy fakt, że konsola Pythona wywołuje
repr()
wyświetlanie obiektów na ekranie. Jest to szczególnie przydatne, jeśli masz własną dostosowaną powłokę Pythona (-i
na przykład z opcją) i masz do niej wstępnie ładowany skrypt. Oto, czego potrzebujesz:import os class ScreenCleaner: def __repr__(self): os.system('cls') # This actually clears the screen return '' # Because that's what repr() likes cls = ScreenCleaner()
Użyj
clear
zamiast,cls
jeśli jesteś w systemie Linux (zarówno wos
poleceniu, jak i nazwie zmiennej)!Teraz, jeśli po prostu napiszesz
cls
lubclear
w konsoli - wyczyści to! Nawetcls()
aniclear()
- tylko surowa zmienna. Dzieje się tak, ponieważ Python wywoła,repr(cls)
aby go wydrukować, co z kolei uruchomi naszą__repr__
funkcję.Przetestujmy to:
>>> df;sag Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'df' is not defined >>> sglknas Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'sglknas' is not defined >>> lksnldn Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'lksnldn' is not defined >>> cls
A ekran jest czysty!
Aby wyjaśnić - powyższy kod musi zostać zaimportowany do konsoli w ten sposób
from somefile import cls
Lub załaduj wstępnie bezpośrednio za pomocą czegoś takiego:
python -i my_pre_loaded_classes.py
źródło
To najlepszy sposób:
>>>import os >>>def cls(): os.system('cls') >>>cls()
źródło
W przypadku Python IDLE 3.8.1 możesz ponownie uruchomić Shell
CTRL + F6
W menu Kliknij menu Shell. Następnie kliknij opcję Uruchom ponownie powłokę.
źródło