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

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

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

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


当前回答

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

其他回答

我在Windows XP, SP3上使用MINGW/BASH。

(在.pythonstartup中插入) #我的ctrl-l已经有点工作了,但这可能会帮助其他人 #在窗口底部留下提示符… 进口readline readline。parse_and_bind(“\价氯:清除屏幕”)

#这在BASH中工作,因为我在.inputrc中也有它,但对于一些 #当我进入Python时它被删除的原因 readline。parse_and_bind(“\ bxcy: kill-whole-line”)


我再也无法忍受输入“exit()”,并对马蒂诺/三联画的技巧感到高兴:

不过我稍微修改了一下(把它放在.pythonstartup中)

class exxxit():
    """Shortcut for exit() function, use 'x' now"""
    quit_now = exit # original object
    def __repr__(self):
        self.quit_now() # call original
x = exxxit()

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

正如你提到的,你可以做一个系统调用:

Windows:

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

对于Linux,它将是:

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

如果你在.inputrc中使用vim键绑定:

set editing-mode vi

它是:

ESC Ctrl-L

编辑:我刚刚读了“windows”,这是针对linux用户的,抱歉。


在bash中:

#!/bin/bash

while true; 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然后运行:

./whatyouwant.sh python

或者python以外的东西(idle,随便什么)。 这将询问你是否真的想退出,如果不是,它将重新运行python(或你作为参数给出的命令)。

这将清除所有,屏幕和所有变量/对象/任何你在python中创建/导入的东西。

在python中,当你想退出时,只需输入exit()。

下面是一个跨平台(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()