如何清除解释器控制台?

Sov*_*iut 299 python windows console clear

像大多数Python开发人员一样,我通常会打开一个控制台窗口,并运行Python解释器来测试命令,dir()内容help() stuff等.

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

我听说过要进行系统调用,要么cls在Windows clear上调用,要么在Linux 上调用,但我希望有一些东西可以命令解释器本身去做.

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

Rya*_*eld 403

如您所述,您可以进行系统调用:

对于Windows

>>> import os
>>> clear = lambda: os.system('cls')
>>> clear()
Run Code Online (Sandbox Code Playgroud)

对于Linux,lambda成为

>>> clear = lambda: os.system('clear')
Run Code Online (Sandbox Code Playgroud)

  • 使用`def`有什么问题?当`def`更清晰时,为什么要使用`lambda`? (45认同)
  • @Akbaribrahim as None将不打印试试这个:`clear = lambda:os.system('cls')或None` (15认同)
  • 在常规函数中定义它而不是lambda不应该显示'0',因为返回值将是None. (14认同)
  • 别忘了导入操作系统 (11认同)
  • +1,很好的答案。有没有办法消耗返回值使其不显示?清除后我得到一个“0”。 (4认同)
  • 这个答案最接近我所要求的“精神”,谢谢。 (3认同)
  • os.system 已弃用。使用 subprocess.call 代替 (3认同)

pop*_*cnt 181

这里有一些方便的东西,更多的跨平台

import os

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

# now, to clear the screen
cls()
Run Code Online (Sandbox Code Playgroud)

  • 未设置 TERM 环境变量。 (3认同)
  • `导入 os` `os.system('cls')` (2认同)

Tri*_*ych 83

嗯,这是一个快速的黑客:

>>> clear = "\n" * 100
>>> print clear
>>> ...do some other stuff...
>>> print clear
Run Code Online (Sandbox Code Playgroud)

或者为了保存一些输入,将此文件放在python搜索路径中:

# wiper.py
class Wipe(object):
    def __repr__(self):
        return '\n'*1000

wipe = Wipe()
Run Code Online (Sandbox Code Playgroud)

然后你可以从解释器中做到这一切你喜欢的:)

>>> from wiper import wipe
>>> wipe
>>> wipe
>>> wipe
Run Code Online (Sandbox Code Playgroud)

  • 哈哈,这很有趣.不完全是我想要的,但很好的尝试. (11认同)
  • 尽管人们大笑,但是打印很多换行符正是外部过程"清晰"和"cls"所做的.这是_做的方法.(只是一个打印,或打印调用的功能,当然不指定"清除"字符串) (8认同)
  • @Triptych:c ="\n"*100有用,+1为它.一个小注释它清除并带到shell的底部,我更喜欢从shell顶部开始. (4认同)
  • @jsbueno不,不是.也许在Windows上(虽然我怀疑它,它有API来清除控制台).在所有其他系统上,`clear`输出一个清除屏幕的指令.没有废弃回滚缓冲区.在我的系统上,它输出这个控制序列:`\ 33 [3J\33 [H\33 [2J`.那就是:`[erase scrollback]``[reset cursor position]``[erase screen]`.使用`clear -x`可以省略`[erase scrollback]`. (4认同)
  • 或者,如果您的终端仿真器解释 ANSI,最好执行: `"\x1B[H\x1B[J"` (2认同)

Den*_*lev 30

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

print("\033[H\033[J", end="")
Run Code Online (Sandbox Code Playgroud)

其他参数end=""允许避免打印新行字符,并返回>>>到真正的顶部左上角。

  • 这是解决问题的唯一真正的办法 (4认同)
  • 这确实是最好的解决方案。简单且多平台。 (3认同)
  • 这样做的好处是它也适用于 Spyder。 (2认同)
  • 哦,我没说清楚。我的意思是 `print("\033[H\033[J")` 这个方法是如何工作的,它的名字是什么!? (2认同)
  • 应该接受! (2认同)
  • 在 IDLE shell 中不起作用 (2认同)

mar*_*eau 27

尽管这是一个老问题,我想我会有所贡献总结什么,我认为是最好的其他答案,并通过建议你把这些命令(S)到一个文件中添加自己的皱纹和设置您的PYTHONSTARTUP环境变量指向它.由于我现在在Windows上,它有点偏向这种方式,但很容易倾向于其他方向.

这里的一些文章中,我发现了描述如何在Windows上设置环境变量:
    当使用sys.path.append和修改PYTHONPATH%时%就够了
    如何管理在Windows XP环境变量
    配置系统和用户环境变量
    如何使用全球系统Windows中的环境变量

顺便说一句,即使文件中有空格,也不要在文件路径周围加上引号.

无论如何,这是我对代码的介绍(或添加到您现有的)Python启动脚本:

# ==== pythonstartup.py ====

# add something to clear the screen
class cls(object):
    def __repr__(self):
        import os
        os.system('cls' if os.name == 'nt' else 'clear')
        return ''

cls = cls()

# ==== end pythonstartup.py ====
Run Code Online (Sandbox Code Playgroud)

顺便说一下,你也可以使用@Triptych的 __repr__诀窍exit()改成just exit(和别名的ditto quit):

class exit(object):
    exit = exit # original object
    def __repr__(self):
        self.exit() # call original
        return ''

quit = exit = exit()
Run Code Online (Sandbox Code Playgroud)

最后,这里有一些其他的东西可以将主要的解释器提示>>>改为cwd + >>>:

class Prompt:
    def __str__(self):
        import os
        return '%s >>> ' % os.getcwd()

import sys
sys.ps1 = Prompt()
del sys
del Prompt
Run Code Online (Sandbox Code Playgroud)


Vla*_*den 24

您可以通过多种方式在Windows上执行此操作:

1.使用键盘快捷键:

Press CTRL + L
Run Code Online (Sandbox Code Playgroud)

2.使用系统调用方法:

import os
cls = lambda: os.system('cls')
cls()
Run Code Online (Sandbox Code Playgroud)

3.使用新行打印100次:

cls = lambda: print('\n'*100)
cls()
Run Code Online (Sandbox Code Playgroud)

  • 所有这些方式都非常...... naff.`cls`只能在windows上工作,让你的程序难以跨平台,打印100`newlines`只是...... eww?并且程序中不使用键盘快捷键. (4认同)

Ale*_*x K 21

毫无疑问,最快捷,最简单的方法是Ctrl+ L.

对于终端上的OS X,这是相同的.

  • 我在Windows 8.1上使用ctrl键使用大写或小写"L"尝试了此解决方案.它对我不起作用.我只是打开并关闭shell窗口以清除它. (3认同)
  • 是的,这是最简单的.我很惊讶没有人提到它. (3认同)
  • 在OS X上,Ctrl + L将填充终端,直到显示清除.您仍然可以向上滚动以查看历史记录.使用Cmd + K清除显示和打印输出历史记录.[更完整的OS X终端热键列表](https://github.com/0nn0/terminal-mac-cheatsheet) (2认同)
  • 在Ubuntu Desktop 16中为我精心工作 (2认同)

小智 14

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

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
Run Code Online (Sandbox Code Playgroud)

然后打电话clear()清除屏幕.这适用于Windows,osx,linux,bsd ...所有操作系统.


Mar*_*mbo 10

完美的cls:

cls = lambda: print("\033c\033[3J", end='')
cls()
Run Code Online (Sandbox Code Playgroud)

或者直接:

print("\033c\033[3J", end='')
Run Code Online (Sandbox Code Playgroud)


Amo*_*mol 8

刮水器很酷,它的好处是我不必在它周围输入'()'.这是一个细微的变化

# wiper.py
import os
class Cls(object):
    def __repr__(self):
        os.system('cls')
        return ''
Run Code Online (Sandbox Code Playgroud)

用法很简单:

>>> cls = Cls()
>>> cls # this will clear console.
Run Code Online (Sandbox Code Playgroud)

  • 我把它命名为`class cls`. (2认同)

小智 8

我不确定 Windows 的“shell”是否支持这一点,但在 Linux 上:

print "\033[2J"

https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes

在我看来,cls用 with调用os通常是一个坏主意。想象一下,如果我设法更改您系统上的 cls 或 clear 命令,并且您以管理员或 root 身份运行脚本。


Pit*_*tto 8

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

import os
clear = lambda: os.system('cls' if os.name=='nt' else 'clear')
clear()
Run Code Online (Sandbox Code Playgroud)

同样的想法,但用一把语法糖:

import subprocess   
clear = lambda: subprocess.call('cls||clear', shell=True)
clear()
Run Code Online (Sandbox Code Playgroud)


yub*_*del 6

对于python控制台类型内的mac用户

import os
os.system('clear')
Run Code Online (Sandbox Code Playgroud)

用于窗户

os.system('cls')
Run Code Online (Sandbox Code Playgroud)


Alb*_*dez 5

这是合并所有其他答案的最终解决方案.特征:

  1. 您可以代码复制粘贴到shell或脚本中.
  2. 你可以随意使用它:

    >>> clear()
    >>> -clear
    >>> clear  # <- but this will only work on a shell
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您可以其作为模块导入:

    >>> from clear import clear
    >>> -clear
    
    Run Code Online (Sandbox Code Playgroud)
  4. 您可以其称为脚本:

    $ python clear.py
    
    Run Code Online (Sandbox Code Playgroud)
  5. 这是真正的多平台 ; 如果它不能识别系统
    (ce,nt,dosposix)将回落到打印空白行.


你可以在这里下载[完整]文件: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()
Run Code Online (Sandbox Code Playgroud)


Jor*_*dez 5

我使用iTerm和Mac OS的原生终端应用程序.

我只需按⌘+ k即可