94

只是一个简单的问题:
你如何在 shell 中清除屏幕?我见过这样的方式:

import os
os.system('cls')

这只是打开 windows cmd,清除屏幕并关闭,但我希望清除 shell 窗口
(PS:我不知道这有帮助,但我使用的是 Python 3.3.2 版本)
谢谢 :)

4

20 回答 20

90

快捷键CTRL+怎么样L

它适用于所有 shell,例如 Python、Bash、MySQL、MATLAB 等。

于 2015-08-07T06:56:11.957 回答
67
import os

os.system('cls')  # For Windows
os.system('clear')  # For Linux/OS X
于 2014-05-07T11:43:43.507 回答
64

For macOS/OS X, you can use the subprocess module and call 'cls' from the shell:

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

To prevent '0' from showing on top of the window, replace the 2nd line with:

tmp = sp.call('cls', shell=True)

For Linux, you must replace cls command with clear

tmp = sp.call('clear', shell=True)
于 2013-11-27T16:03:19.957 回答
14

以下是您可以在 Windows 上使用的一些选项

第一个选项:

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

>>> cls()

第二种选择:

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

>>> cls()

如果您在 Python REPL 窗口中,则第三个选项:

Ctrl+L
于 2017-01-19T19:34:52.277 回答
12

您正在寻找的东西可以在 curses 模块中找到。

IE

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()

可能会做得很好。

于 2013-09-21T20:23:30.860 回答
9

除了是一个全方位的优秀 CLI 库之外,click还提供了一个平台无关的clear()功能:

import click
click.clear()
于 2017-11-14T22:20:45.220 回答
7

此函数适用于任何操作系统(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,在类 unix 系统中,命令是clear.
platform.system()返回平台名称。前任。'Darwin'对于 macOS。
subprocess.call()执行系统调用。前任。subprocess.call(['ls','-l'])

于 2017-03-18T17:13:18.433 回答
6

在 python 中清除屏幕的一种更简单的方法是使用Ctrl+ L,尽管它适用于 shell 以及其他程序。

于 2015-03-25T19:29:20.273 回答
4

如果你使用linux终端访问python,那么cntrl+l是最好的清屏方案

于 2015-05-21T10:08:19.587 回答
4

我正在使用一个仅在幕后使用上述方法之一的类...我注意到它适用于 Windows 和 Linux...我喜欢使用它,因为它更容易键入 clear() 而不是 system('clear' ) 或 os.system('clear')

pip3 install clear-screen

from clear_screen import clear

然后当你想清除外壳时:

clear()
于 2019-01-28T06:03:21.057 回答
3

使用Windows 10pyhton3.5我测试了很多代码,没有什么比这更能帮助我了:

首先定义一个简单的函数,这个函数会打印 50 行换行;(数字 50 取决于你在屏幕上能看到多少行,所以你可以改变这个数字)

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

然后只要你想要或需要多次调用它

cls()
于 2016-04-23T00:43:25.230 回答
2

Subprocess 允许您为 Shell 调用“cls”。

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

这就像我能做到的那样简单。希望这对你有用!

于 2015-01-09T00:12:21.770 回答
2

Rather than importing all of curses or shelling out just to get one control character, you can simply use (on Linux/macOS):

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

(Source: Clear terminal in Python)

于 2019-12-12T18:03:00.640 回答
2

Command+K在 OSX 中可以正常工作以清除屏幕。

Shift+Command+K仅清除回滚缓冲区。

于 2018-09-20T06:10:21.923 回答
1
import curses
stdscr = curses.initscr()
stdscr.clear()
于 2013-09-21T21:22:06.237 回答
1
  1. 你可以使用 Window 或 Linux 操作系统

    import os
    os.system('cls')
    os.system('clear')
    
  2. 您可以使用子流程模块

    import subprocess as sp
    x=sp.call('cls',shell=True)
    
于 2015-08-18T05:30:05.537 回答
1

os.system('cls')当我打开它们时工作正常。它以 cmd 样式打开。

于 2015-09-01T17:50:19.160 回答
0

以下是如何在不显式调用任何函数的情况下制作您自己的命令cls或命令!clear

我们将利用 python 控制台调用repr()在屏幕上显示对象这一事实。如果您有自己的自定义 python shell(-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而不是!clsos

现在,如果您只是在控制台中写入cls或写入 - 它会清除它!clear甚至不是cls()-clear()只是原始变量。这是因为python会调用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
于 2019-11-27T11:13:55.357 回答
0

对于 Python IDLE 3.8.1,您可以重新启动 Shell

CTRL + F6

在菜单上 单击 Shell 菜单。然后单击“重新启动 Shell”选项。

于 2020-07-15T00:40:06.887 回答
0

这是最好的方法:

>>>import os
>>>def cls(): os.system('cls')
>>>cls()
于 2020-01-25T09:48:47.080 回答