쉘에서 화면 지우기


90

간단한 질문입니다.
쉘에서 화면을 어떻게 지우나요? 나는 다음과 같은 방법을 보았습니다.

import os
os.system('cls')

이것은 창 cmd를 열고 화면을 지우고 닫지 만 쉘 창을 지우고 싶습니다
(PS : 도움이되지는 않지만 Python 3.3.2 버전을 사용하고
있습니다 ) 감사합니다 :)


답변:


57

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)

3
나는 Mac OS X를 사용 import subprocess as sp sp.call('clear',shell=True)하고 0있으며 터미널 창 상단에있는 것을 제외하고는 작동하는 것을 시도했습니다 .
Daniel Dropik 2014

0은 쉘에서 'cls'명령 호출의 반환 값입니다. 나는 단순히 그 값을 변수에 저장함으로써 그것을 제거하기 위해 대답을 편집했습니다.
GalHai 2014

9
시도해보세요ctrl+L
Sai Ram

그것은 명령 줄에서 작동합니다. 질문은 파이썬에서 어떻게 하는가였습니다.
Edward Falk

해결책에 감사드립니다. shell = True가 누락되었습니다. 0이 표시되는 것을 방지하기 위해 문 끝에 세미콜론을 추가 할 수도 있습니다. sp.call('cls', shell=True);
Waylon Walker

84

단축키 CTRL+는 L어떻습니까?

Python, Bash, MySQL, MATLAB 등 모든 셸에서 작동합니다.


8
불행히도 Windows10의 새로운 cmd를 포함하여 Windows에서 작동하지 않습니다
9a3eedi

자동화를 위해 하위 프로세스를 사용할 때이 접근 방식은 작동하지 않습니다.
mountainLion

64
import os

os.system('cls')  # For Windows
os.system('clear')  # For Linux/OS X

또한 os.system('clear')Mac OS X 터미널의 경우 (기본 셸 bash및에서도 작동하도록 확인 됨 csh).
jvriesem 2014

다음과 같이이를 실행하는 함수를 정의 할 수도 있습니다. def cls () : os.system ( 'cls') (Enter 두 번 누르기). 그런 다음 cls ()를 입력하여 화면을 지울 수 있습니다.

문제는 셸에서이를 수행하는 방법에 대한 것이 었습니다.
Kyle Delaney

1
@KyleDelaney는 비효율적이지만 셸에서 작동합니다. 또한 많은 사람들이 이것이 그들이 찾고 있던 것이기 때문에 유용하다고 생각했습니다.
Gaspa79

12

당신이 찾고있는 것은 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()

아마 멋지게 할 것입니다.


더 자세하게 얘기해 주 시겠어요?
josh

1
터미널에 Mac OS X 10.7.5 및 iTerm 2를 실행하고 있습니다. Python2.7을 사용 stdscr = curses.initscr()하면 화면을 지우고 stdscr.clear()아무것도하지 않습니다. Python3.4를 사용 stdscr = curses.initscr()하면 화면이 지워지지 만 터미널의 줄 바꿈 처리 기능은 제거됩니다. 반복해서 Enter를 누르면 다음과 같은 결과가 나타납니다 >>> >>> >>> >>> . 여전히 명령을 입력 할 수 있지만 표시되지 않습니다. 또한이 동작은 내가 exit()Python을 사용해도 지속됩니다 . 사용을 피하십시오!
jvriesem 2014

@jvriesem curses 모듈은 오랫동안 사용되어 왔으며 많은 사람들이 사용했습니다. 짧은 시간 (20 줄 정도), 예 및 게시물 중 하나에서 동작을 복제 할 수 있는지 확인하는 것이 좋습니다. 스택 오버플로 질문 또는 개발자 메일 링리스트에 있습니다.
Steve Barnes

좋은 생각입니다. "사용하지 마세요!"보다 더 나은 답변입니다. 성명서. 이 답변의 처음 두 줄은 저에게 문제를 재현하는 두 줄이었습니다. curses모듈에 호환성 문제 (Windows 대 Mac 대 Linux)가 있는 이유가 있는지 알고 있습니까? 이 문제가 적어도 두 개의 다른 Mac 터미널에서 발생한다는 것을 확인할 수 있습니다. 동작은 BASH에서 지속되지만 CSH에서는 지속되지 않습니다. 흠 .... curses 개발자, 쉘 개발자에게 연락해야할까요? 아니면 SO 커뮤니티에 물어봐야할까요? 다시 한 번 감사드립니다!
jvriesem 2014

@jvriesem-종료를 포함하여 완료되면 터미널을 표준 모드로 재설정하는 방법을 포함하도록 답변을 업데이트했습니다.
Steve Barnes

12

다음은 Windows에서 사용할 수있는 몇 가지 옵션입니다.

첫 번째 옵션 :

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

>>> cls()

두 번째 옵션 :

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

>>> cls()

Python REPL 창에있는 경우 세 번째 옵션 :

Ctrl+L

9

다재다능한 CLI 라이브러리 click일뿐만 아니라 플랫폼에 구애받지 않는 clear()기능 도 제공 합니다.

import click
click.clear()

7

이 기능은 모든 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'])


6

파이썬에서 화면을 지우는 더 쉬운 방법은 Ctrl+ 를 사용하는 L것입니다. 셸과 다른 프로그램에서도 작동합니다.


4

Linux 터미널을 사용하여 Python에 액세스하는 경우 cntrl + l이 화면을 지우는 가장 좋은 솔루션입니다.


4

위의 방법 중 하나를 백그라운드에서 사용하는 클래스를 사용하고 있습니다. Windows 및 Linux에서 작동하는 것으로 나타났습니다 ... system ( 'clear'대신 clear ()를 입력하는 것이 더 쉽기 때문에 사용하는 것이 좋습니다. ) 또는 os.system ( 'clear')

pip3 install clear-screen

from clear_screen import clear

셸을 지우고 싶을 때 :

clear()

3

Windows 10pyhton3.5를 사용하여 많은 코드를 테스트했으며 이보다 더 도움이 된 것은 없습니다.

먼저 간단한 함수를 정의하면이 함수는 50 개의 줄 바꿈을 인쇄합니다 (숫자 50은 화면에서 볼 수있는 줄 수에 따라 달라 지므로이 숫자를 변경할 수 있습니다).

def cls(): print ("\n" * 50)

그런 다음 원하는만큼 또는 필요한만큼 전화를 걸어

cls()

준비된 명령 아이디어 중 어느 것도 나를 위해 일하지 않았습니다. 물론 내 자신의 기능을 만들었습니다.
DashingQuark

2

Command+K 화면을 지우려면 OSX에서 잘 작동합니다.

Shift+Command+K 스크롤 백 버퍼 만 지우려면



1

Subprocess를 사용하면 Shell에 대해 "cls"를 호출 할 수 있습니다.

import subprocess
cls = subprocess.call('cls',shell=True)

제가 할 수있는 한 간단합니다. 그것이 당신을 위해 작동하기를 바랍니다!


1
  1. Window 또는 Linux Os를 사용할 수 있습니다.

    import os
    os.system('cls')
    os.system('clear')
    
  2. 하위 프로세스 모듈을 사용할 수 있습니다.

    import subprocess as sp
    x=sp.call('cls',shell=True)
    

1

os.system('cls')열 때 잘 작동합니다. cmd 스타일로 열립니다.


1

하나의 제어 문자를 얻기 위해 모든 저주를 가져 오거나 제거하는 대신 (Linux / macOS에서) 다음을 사용할 수 있습니다.

print(chr(27) + "[2J")

(출처 : Python의 Clear terminal )


0

명시 적으로 함수를 호출하지 않고도 작동하는 고유 한 명령 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

0

이것이 가장 좋은 방법입니다.

>>>import os
>>>def cls(): os.system('cls')
>>>cls()

3
나는 당신의 대답이 이미 지난 몇 년 동안 주어진 대답에서 어떻게 향상되는지 실제로 보지 못합니다.
David Buck

그것을 필요로하는 사람들은 볼 것입니다. 나는 개선 할 필요가 없다. 고마워, 형.
Fahimbd_14

2
그는 당신의 대답을 개선하는 것에 대해 말하지 않았습니다. 그는 다른 사람이 이미 동일한 답변을 제공했기 때문에 귀하의 답변이 유용하지 않다고 말했습니다.
OmikronWeapon

0

Python IDLE 3.8.1의 경우 셸을 다시 시작할 수 있습니다.

Ctrl + F6

메뉴에서 셸 메뉴를 클릭합니다. 그런 다음 Restart Shell 옵션을 클릭하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.