간단한 질문입니다.
쉘에서 화면을 어떻게 지우나요? 나는 다음과 같은 방법을 보았습니다.
import os
os.system('cls')
이것은 창 cmd를 열고 화면을 지우고 닫지 만 쉘 창을 지우고 싶습니다
(PS : 도움이되지는 않지만 Python 3.3.2 버전을 사용하고
있습니다 ) 감사합니다 :)
답변:
macOS / OS X의 경우 하위 프로세스 모듈을 사용하고 셸에서 'cls'를 호출 할 수 있습니다.
import subprocess as sp
sp.call('cls', shell=True)
'0'이 창 상단에 표시되지 않도록하려면 두 번째 줄을 다음으로 바꿉니다.
tmp = sp.call('cls', shell=True)
Linux의 경우 cls
명령을 다음으로 바꿔야합니다.clear
tmp = sp.call('clear', shell=True)
import subprocess as sp sp.call('clear',shell=True)
하고 0
있으며 터미널 창 상단에있는 것을 제외하고는 작동하는 것을 시도했습니다 .
ctrl+L
sp.call('cls', shell=True);
단축키 CTRL+는 L어떻습니까?
Python, Bash, MySQL, MATLAB 등 모든 셸에서 작동합니다.
import os
os.system('cls') # For Windows
os.system('clear') # For Linux/OS X
os.system('clear')
Mac OS X 터미널의 경우 (기본 셸 bash
및에서도 작동하도록 확인 됨 csh
).
당신이 찾고있는 것은 curses 모듈에서 찾을 수 있습니다.
즉
import curses # Get the module
stdscr = curses.initscr() # initialise it
stdscr.clear() # Clear the screen
기억해야 할 중요한 사항은 종료하기 전에 터미널을 일반 모드로 재설정해야한다는 것입니다. 다음 행을 사용하여 수행 할 수 있습니다.
curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()
그렇지 않으면 온갖 이상한 행동을하게 될 것입니다. 이것이 항상 수행되도록하기 위해 다음과 같은 atexit 모듈을 사용하는 것이 좋습니다.
import atexit
@atexit.register
def goodbye():
""" Reset terminal from curses mode on exit """
curses.nocbreak()
if stdscr:
stdscr.keypad(0)
curses.echo()
curses.endwin()
아마 멋지게 할 것입니다.
stdscr = curses.initscr()
하면 화면을 지우고 stdscr.clear()
아무것도하지 않습니다. Python3.4를 사용 stdscr = curses.initscr()
하면 화면이 지워지지 만 터미널의 줄 바꿈 처리 기능은 제거됩니다. 반복해서 Enter를 누르면 다음과 같은 결과가 나타납니다 >>> >>> >>> >>>
. 여전히 명령을 입력 할 수 있지만 표시되지 않습니다. 또한이 동작은 내가 exit()
Python을 사용해도 지속됩니다 . 사용을 피하십시오!
curses
모듈에 호환성 문제 (Windows 대 Mac 대 Linux)가 있는 이유가 있는지 알고 있습니까? 이 문제가 적어도 두 개의 다른 Mac 터미널에서 발생한다는 것을 확인할 수 있습니다. 동작은 BASH에서 지속되지만 CSH에서는 지속되지 않습니다. 흠 .... curses 개발자, 쉘 개발자에게 연락해야할까요? 아니면 SO 커뮤니티에 물어봐야할까요? 다시 한 번 감사드립니다!
이 기능은 모든 OS (Unix, Linux, macOS 및 Windows)
Python 2 및 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
Windows에서 명령은 cls
이고, 유닉스 계열 시스템에서는 명령이 clear
입니다.
platform.system()
플랫폼 이름을 반환합니다. 전의. 'Darwin'
macOS 용.
subprocess.call()
시스템 호출을 수행합니다. 전의.subprocess.call(['ls','-l'])
파이썬에서 화면을 지우는 더 쉬운 방법은 Ctrl+ 를 사용하는 L것입니다. 셸과 다른 프로그램에서도 작동합니다.
위의 방법 중 하나를 백그라운드에서 사용하는 클래스를 사용하고 있습니다. Windows 및 Linux에서 작동하는 것으로 나타났습니다 ... system ( 'clear'대신 clear ()를 입력하는 것이 더 쉽기 때문에 사용하는 것이 좋습니다. ) 또는 os.system ( 'clear')
pip3 install clear-screen
from clear_screen import clear
셸을 지우고 싶을 때 :
clear()
Windows 10 및 pyhton3.5를 사용하여 많은 코드를 테스트했으며 이보다 더 도움이 된 것은 없습니다.
먼저 간단한 함수를 정의하면이 함수는 50 개의 줄 바꿈을 인쇄합니다 (숫자 50은 화면에서 볼 수있는 줄 수에 따라 달라 지므로이 숫자를 변경할 수 있습니다).
def cls(): print ("\n" * 50)
그런 다음 원하는만큼 또는 필요한만큼 전화를 걸어
cls()
Window 또는 Linux Os를 사용할 수 있습니다.
import os
os.system('cls')
os.system('clear')
하위 프로세스 모듈을 사용할 수 있습니다.
import subprocess as sp
x=sp.call('cls',shell=True)
하나의 제어 문자를 얻기 위해 모든 저주를 가져 오거나 제거하는 대신 (Linux / macOS에서) 다음을 사용할 수 있습니다.
print(chr(27) + "[2J")
(출처 : Python의 Clear terminal )
명시 적으로 함수를 호출하지 않고도 작동하는 고유 한 명령 cls
또는 clear
명령 을 만드는 방법은 다음과 같습니다 .
우리는 파이썬 콘솔 repr()
이 화면에 객체를 표시하기 위해 호출한다는 사실을 활용할 것입니다 . 이는 사용자 정의 된 Python 셸 ( -i
예 : 옵션 포함)이 있고 이에 대한 사전로드 스크립트가있는 경우 특히 유용 합니다. 이것이 필요한 것입니다.
import os
class ScreenCleaner:
def __repr__(self):
os.system('cls') # This actually clears the screen
return '' # Because that's what repr() likes
cls = ScreenCleaner()
Linux를 사용 clear
하는 cls
경우 대신 사용하십시오 ( os
명령 및 변수 이름 모두)!
이제 당신은 작성하는 경우 cls
또는 clear
콘솔에서 - 그것을 삭제됩니다! 심지어 cls()
나 clear()
- 그냥 원시 변수입니다. 이것은 파이썬이 repr(cls)
그것을 인쇄하기 위해 호출 할 것이고, 이것은 차례로 우리의 __repr__
함수를 트리거 할 것이기 때문 입니다.
테스트 해 보겠습니다.
>>> 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
그리고 화면이 깨끗합니다!
명확히하기 위해 위의 코드는 다음과 같이 콘솔에서 가져와야합니다.
from somefile import cls
또는 다음과 같이 직접 미리로드합니다.
python -i my_pre_loaded_classes.py
이것이 가장 좋은 방법입니다.
>>>import os
>>>def cls(): os.system('cls')
>>>cls()