像大多数Python开发人员一样,我通常打开一个控制台窗口,运行Python解释器来测试命令、dir()之类的东西、help()之类的东西,等等。

像任何控制台一样,在一段时间后,过去命令和打印的可见积压会变得混乱,并且在多次重新运行相同的命令时有时会令人困惑。我想知道是否以及如何清除Python解释器控制台。

我听说过做一个系统调用,或者在Windows上调用cls,或者在Linux上清除,但我希望有一些我可以命令解释器本身做的事情。

注意:我在Windows上运行,所以Ctrl+L不起作用。


当前回答

我的方法是这样写一个函数:

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

然后调用clear()清除屏幕。 这适用于windows, osx, linux, bsd…所有的操作系统。

其他回答

这里有两种很好的方法:

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

下面是一个跨平台(Windows / Linux / Mac /可能其他你可以添加在if检查)版本片段,我结合了这个问题中发现的信息:

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

同样的想法,但有一勺语法糖:

import subprocess   
clear = lambda: subprocess.call('cls||clear', shell=True)
clear()

这是您可以做的最简单的事情,它不需要任何额外的库。它清除屏幕并将>>>返回到左上角。

print("\033[H\033[J", end="")

更新1:

既然这个答案得到了一些关注,你可能想知道它是如何工作的。上面的命令输出ANSI转义码:

\033代表ESC (ANSI值27)。 \033[是一个特殊的转义序列,称为控制序列 介绍人(CSI)。 \033[H命令将光标移动到屏幕的左上角。 \033[J清除屏幕从光标到的结束 屏幕上。

可选参数end=""避免在执行这些命令后打印换行符,因此>>>将保持在最上面一行。

更新2:

你可能想用一个额外的参数来扩展上面的命令- x(在J之前):

print("\033[H\033[xJ", end="")

如果x为1,它将从光标清除到屏幕开始。 如果x是2,它将清除整个屏幕并移动光标到 左上角。 如果x = 3,它将全部清空 筛选并删除保存在滚动缓冲区中的所有行。

因此,这个命令将清除所有内容,包括buffer:

print("\033[H\033[3J", end="")

命令行:

要清除shell(控制台/终端)中的屏幕,您可以使用相同的命令。要清除整个屏幕并删除scrollback缓冲区中保存的所有行,在J前面加3:

printf "\033[H\033[3J"

或者创建一个别名:

alias cls='printf "\033[H\033[3J"'

这里有一个最终的解决方案,它融合了所有其他的答案。特点:

您可以将代码复制粘贴到shell或脚本中。 你可以随心所欲地使用它: > > > clear () > > >明确 >>> clear # <-但这只适用于shell 你可以把它作为一个模块导入: >>> from clear import clear > > >明确 你可以调用它作为一个脚本: $ python clear.py 它是真正的多平台游戏;如果它不能识别你的系统 (ce, nt, DOS或posix),它将回落到打印空白行。


你可以在这里下载[完整]文件:https://gist.github.com/3130325 或者如果你只是在寻找代码:

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

好吧,这是一个不太技术性的答案,但我使用的是notepad++的Python插件,结果是你可以手动清除控制台,只需右键单击它,然后单击“清除”。希望这能帮助到一些人!