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

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

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

注意:我在Windows上运行,所以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()。

其他回答

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

您可以将代码复制粘贴到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()

编辑:我刚刚读了“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的“shell”是否支持这个,但在Linux上:

打印”033年\ [2 j”

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

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

>>> ' '*80*25

更新:80x25不太可能是控制台窗口的大小,所以要获得真正的控制台尺寸,使用从寻呼机模块的函数。Python没有提供任何与核心发行版类似的东西。

>>> from pager import getheight
>>> '\n' * getheight()

使用闲置。它有许多方便的功能。例如,Ctrl+F6重置控制台。关闭和打开控制台是清除它的好方法。