像大多数Python开发人员一样,我通常打开一个控制台窗口,运行Python解释器来测试命令、dir()之类的东西、help()之类的东西,等等。
像任何控制台一样,在一段时间后,过去命令和打印的可见积压会变得混乱,并且在多次重新运行相同的命令时有时会令人困惑。我想知道是否以及如何清除Python解释器控制台。
我听说过做一个系统调用,或者在Windows上调用cls,或者在Linux上清除,但我希望有一些我可以命令解释器本身做的事情。
注意:我在Windows上运行,所以Ctrl+L不起作用。
这是您可以做的最简单的事情,它不需要任何额外的库。它清除屏幕并将>>>返回到左上角。
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"'
编辑:我刚刚读了“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()。