关于windows:如何清除解释器控制台?

How to clear the interpreter console?

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

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

我听说过做系统调用,或者在Windows上调用cls,或者在Linux上调用clear,但我希望有一些事情我可以命令解释器自己去做。

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


正如您提到的,您可以进行系统调用:

对于Windows

1
2
3
>>> import os
>>> clear = lambda: os.system('cls')
>>> clear()

对于Linux,lambda变成

1
>>> clear = lambda: os.system('clear')


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

1
2
3
4
5
6
7
import os

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

# now, to clear the screen
cls()


好吧,这里有一个快速的黑客:

1
2
3
4
5
>>> clear ="
"
* 100
>>> print clear
>>> ...do some other stuff...
>>> print clear

或者,要保存一些键入内容,请将此文件放在python搜索路径中:

1
2
3
4
5
6
7
# wiper.py
class Wipe(object):
    def __repr__(self):
        return '
'
*1000

wipe = Wipe()

然后,您可以从解释器中按自己喜欢的方式执行此操作:)

1
2
3
4
>>> from wiper import wipe
>>> wipe
>>> wipe
>>> wipe


虽然这是一个古老的问题,但我认为我会贡献一些东西来总结我认为其他答案中最好的,并通过建议您将这些命令放入一个文件中,并将pythonstartup环境变量设置为指向它来添加我自己的褶皱。因为我现在在窗户上,所以有点偏向这个方向,但很容易被其他方向倾斜。

以下是我发现的一些描述如何在Windows上设置环境变量的文章:
&何时使用sys.path.append以及何时修改%pythonpath%就足够了
&如何在Windows XP中管理环境变量
&配置系统和用户环境变量
&如何在Windows中使用全局系统环境变量

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

无论如何,下面是我要放入(或添加到现有的)Python启动脚本的代码:

1
2
3
4
5
6
7
8
9
10
11
12
# ==== 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 ====

顺便说一句,您还可以使用@triptych的__repr__技巧将exit()改为just exit(其别名quit也可以这样做):

1
2
3
4
5
6
7
class exit(object):
    exit = exit # original object
    def __repr__(self):
        self.exit() # call original
        return ''

quit = exit = exit()

最后,这里还有一些将主解释器提示从>>>更改为cwd+>>>

1
2
3
4
5
6
7
8
9
class Prompt:
    def __str__(self):
        import os
        return '%s >>> ' % os.getcwd()

import sys
sys.ps1 = Prompt()
del sys
del Prompt


您可以在Windows上使用多种方法:

1。使用键盘快捷键:

1
Press CTRL + L

2。使用系统调用方法:

1
2
3
import os
cls = lambda: os.system('cls')
cls()

三。使用新行打印100次:

1
2
3
cls = lambda: print('
'
*100)
cls()


毫无疑问,最快和最简单的方法是ctrl+l

终端上的OS X也是如此。


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

1
2
3
4
5
6
7
8
9
10
11
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("
"
) * 120

然后调用clear()清除屏幕。这适用于Windows、OSX、Linux、BSD…所有OSES。


雨刷很酷,好的是我不用在它周围打"()"。这有点变化

1
2
3
4
5
6
# wiper.py
import os
class Cls(object):
    def __repr__(self):
        os.system('cls')
        return ''

使用非常简单:

1
2
>>> cls = Cls()
>>> cls # this will clear console.


下面是一个跨平台(windows/linux/mac/可能还有其他可以在if-check中添加的版本)的版本片段,我结合了在这个问题中找到的信息:

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

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

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


下面是合并所有其他答案的最终解决方案。特征:

  • 您可以复制粘贴代码到外壳或脚本中。
  • 您可以随意使用:

    1
    2
    3
    >>> clear()
    >>> -clear
    >>> clear  # <- but this will only work on a shell
  • 您可以将其作为模块导入:

    1
    2
    >>> from clear import clear
    >>> -clear
  • 您可以将其称为脚本:

    1
    $ python clear.py
  • 它确实是多平台的;如果它不能识别你的系统(centdosposix将返回打印空白行。

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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('
    '
    *120)
     def __neg__(self): self()
     def __repr__(self):
      self();return ''

    clear=clear()

    我使用iTerm和Mac OS的本地终端应用程序。

    我只是按一下?+K


    闲置使用。它有许多方便的特性。例如,ctrl+f6重置控制台。关闭和打开控制台是清除控制台的好方法。


    对于python控制台内的mac用户,键入

    1
    2
    import os
    os.system('clear')

    对于Windows

    1
    os.system('cls')

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

    print"\033[2J"

    https://en.wikipedia.org/wiki/ansi_escape_code_csi_codes

    在我看来,用os来称呼cls通常是个坏主意。想象一下,如果我在您的系统上更改了cls或clear命令,并且您以admin或root的身份运行您的脚本。


    Linux中的操作系统命令clear和Windows中的cls输出一个"魔力字符串",您可以直接打印。要获取字符串,请使用popen执行命令,并将其保存在变量中,以供以后使用:

    1
    2
    3
    4
    5
    from os import popen
    with popen('clear') as f:
        clear = f.read()

    print clear

    在我的机器上,绳子是'\x1b[H\x1b[2J'


    这有两种很好的方法:

    1。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import os

    def clear():
        if os.name == 'posix':
            os.system('clear')

        elif os.name in ('ce', 'nt', 'dos'):
            os.system('cls')


    clear()


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

    1
    print("\033[H\033[J")


    我在WindowsXP和SP3上使用mingw/bash。

    (把这个塞进去,皮托开始)#我的ctrl-l已经起作用了,但这可能对其他人有所帮助。#但在窗口底部留下提示…进口读出线readline.parse_and_bind('c-l:clear screen')

    #这在bash中有效,因为我在.inputrc中也有,但是对于一些#当我进入python时它会掉下来的原因readline.parse_and_bind('c-y:kill whole line')

    我再也受不了输入'exit()'了,对马蒂诺的/triptych的技巧很满意:

    不过,我稍微修改了一下(把它塞进了.pythonstartup)

    1
    2
    3
    4
    5
    6
    class exxxit():
       """Shortcut for exit() function, use 'x' now"""
        quit_now = exit # original object
        def __repr__(self):
            self.quit_now() # call original
    x = exxxit()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Py2.7.1>help(x)
    Help on instance of exxxit in module __main__:

    class exxxit
     |  Shortcut for exit() function, use 'x' now
     |
     |  Methods defined here:
     |
     |  __repr__(self)
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  quit_now = Use exit() or Ctrl-Z plus Return to exit

    这个怎么样

    1
    - os.system('cls')

    那是尽可能短的!


    我不熟悉python(真的很新),在我正在阅读的一本书中,我了解了他们教我如何创建这个小函数的语言,以清除控制台中可见的积压和过去的命令和打印:

    打开shell/创建新文档/创建函数,如下所示:

    1
    2
    3
    def clear():
        print('
    '
    * 50)

    将它保存在python目录的lib文件夹中(我的是c:python33lib)下次您需要清除控制台时,只需使用以下命令调用函数:

    1
    clear()

    就是这样。附言:你可以随意命名你的函数。四、看到人们使用"雨刷"、"擦拭"等多种方式。


    我正在使用Spyder(python 2.7)并清理我使用的解释器控制台

    %清除

    这将强制命令行转到顶部,我将看不到以前的旧命令。

    或者单击控制台环境中的"选项",然后选择"重新启动内核",删除所有内容。


    我发现最简单的方法就是关闭窗口并运行一个模块/脚本来重新打开shell。


    如果是在Mac上,那么一个简单的cmd + k应该可以做到这一点。


    我可能会迟到,但这是一个很容易做到的方法

    Type:

    1
    2
    def cls():
        os.system("cls")

    所以,无论你想清除什么,只要输入你的代码就行了。

    1
    cls()

    最好的办法!(学分:https://www.youtube.com/watch?annotation_id=annotation_3770292585&feature=iv&src_vid=bgukhmnvmb8&v=ltgep9c6z-u)


    就用这个…

    print '
    '*1000


    编辑:我刚读过"Windows",这是给Linux用户的,对不起。

    在巴什:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/bin/bash

    while ["0" =="0" ]; do
        clear
        $@
        while ["$input" =="" ]; do
            read -p"Do you want to quit? (y/n):" -n 1 -e input
            if ["$input" =="y" ]; then
                exit 1
            elif ["$input" =="n" ]; then
                echo"Ok, keep working ;)"
            fi
        done
        input=""
    done

    将其另存为"whatyouwant.sh",chmod+x,然后运行:

    1
    ./whatyouwant.sh python

    或者其他的东西,而不是python(空闲,无论什么)。这将询问您是否确实要退出,如果不退出,则会重新运行python(或作为参数提供的命令)。

    这将清除所有、屏幕和所有在python中创建/导入的变量/对象/任何内容。

    在python中,只需在要退出时键入exit()。


    这应该是跨平台的,并且根据os.system文档,使用首选的subprocess.call而不是os.system。应该在python中工作>=2.4。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import subprocess
    import os

    if os.name == 'nt':
        def clearscreen():
            subprocess.call("cls", shell=True)
            return
    else:
        def clearscreen():
            subprocess.call("clear", shell=True)
            return

    1
    >>> ' '*80*25

    更新:80x25不太可能是控制台窗口的大小,因此要获得真正的控制台尺寸,请使用寻呼机模块中的函数。python不提供与核心发行版类似的任何内容。

    1
    2
    3
    >>> from pager import getheight
    >>> '
    '
    * getheight()


    好吧,这是一个技术性的答案,但我使用的是用于记事本++的python插件,结果表明,您只需右键单击它并单击"清除",就可以手动清除控制台。希望这能帮上忙!


    上面提到了魔法字符串-我相信它们来自terminfo数据库:

    http://www.google.com/?q=xαq=TeNFO

    http://www.google.com/?q=x q=tput+command+in+unix

    $tput清除OD-T x1Z0000000 1B 5B 48 1B 5B 32 4A>[H.[2J]<000000 7


    刚刚进入

    1
    2
    3
    import os
    os.system('cls') # Windows
    os.system('clear') # Linux, Unix, Mac OS X

    最简单的方法"导入"操作系统

    clear = lambda: os.system('clear')
    clear()`

    < /块引用>< /块引用>


    一个简单的一行程序是:

    # for windows name is nt

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

    clear()


    在Spyder中,当您想清除变量资源管理器中的所有变量时,只需在控制台中键入global().clear(),它们就会全部消失。