如何清除解释器控制台?

时间:2009-02-05 21:19:20

标签: windows console clear python

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

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

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

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

38 个答案:

答案 0 :(得分:370)

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

适用于Windows

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

对于Linux,lambda变为

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

答案 1 :(得分:171)

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

import os

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

# now, to clear the screen
cls()

答案 2 :(得分:80)

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

>>> clear = "\n" * 100
>>> print clear
>>> ...do some other stuff...
>>> print clear

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

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

wipe = Wipe()

然后你可以从口译员那里做到这一点:)

>>> from wiper import wipe
>>> wipe
>>> wipe
>>> wipe

答案 3 :(得分:27)

虽然这是一个较老的问题,但我认为我总结了一些我认为最好的其他答案的东西,并通过建议你将这些命令放入文件中来添加我自己的皱纹。将PYTHONSTARTUP环境变量设置为指向它。由于我现在在Windows上,它有点偏向这种方式,但很容易在其他方向倾斜。

以下是我发现的一些文章,描述了如何在Windows上设置环境变量:
    When to use sys.path.append and when modifying %PYTHONPATH% is enough
    How To Manage Environment Variables in Windows XP
    Configuring System and User Environment Variables
    How to Use Global System Environment Variables in 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 ====

顺便说一下,您还可以使用@ Triptych's __repr__技巧将exit()更改为exit(并为其别名quit同上):

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

quit = exit = exit()

最后,还有一些其他内容可以将主要解释器提示从>>>更改为 cwd + >>>

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

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

答案 4 :(得分:22)

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

1。使用键盘快捷键:

Press CTRL + L

2。使用系统调用方法:

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

3。使用新行打印100次:

cls = lambda: print('\n'*100)
cls()

答案 5 :(得分:19)

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

终端上的OS X也是如此。

答案 6 :(得分: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

然后调用clear()清除屏幕。 这适用于windows,osx,linux,bsd ...所有操作系统。

答案 7 :(得分:8)

刮水器很酷,好消息是我不必在它周围输入'()'。 这是一个小小的变化

# wiper.py
import os
class Cls(object):
    def __repr__(self):
        os.system('cls')
        return ''

用法非常简单:

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

答案 8 :(得分:7)

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

答案 9 :(得分:5)

这是合并所有其他答案the definitive solution。特性:

  1. 您可以将代码复制粘贴到您的shell或脚本中。
  2. 您可以随意使用

    >>> clear()
    >>> -clear
    >>> clear  # <- but this will only work on a shell
    
  3. 您可以导入它作为模块:

    >>> from clear import clear
    >>> -clear
    
  4. 您可以调用作为脚本:

    $ python clear.py
    
  5. 真正的多平台;如果它无法识别您的系统
    centdosposix)它将回退到打印空行。


  6. 您可以在此处下载[完整]文件: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()
    

答案 10 :(得分:5)

我使用iTerm和Mac OS的原生终端应用。

我只需按⌘+ k

即可

答案 11 :(得分:4)

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

import os
os.system('clear')

对于Windows

os.system('cls')

答案 12 :(得分:4)

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

答案 13 :(得分:3)

我不确定Windows&#39; &#34;壳&#34;支持这一点,但在Linux上:

print "\033[2J"

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

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

答案 14 :(得分:2)

以下是两种不错的方法:

1。

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

import os

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

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


clear()

答案 15 :(得分:2)

这是您可以做的最简单的事情,它不需要任何其他库。它将清除屏幕并将{your-webapplication-assemblyname}.PrecompiledViews.dll返回到左上角。

>>>

答案 16 :(得分:2)

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

(坚持.pythonstartup)
 #我的ctrl-l已经有点工作,但这可能会帮助别人  #离开窗口底部的提示虽然...
输入readline
readline.parse_and_bind('\ C-l:clear-screen')

#这在BASH中起作用,因为我也在.inputrc中使用它,但对于某些人来说  #当我进入Python时它被丢弃的原因
readline.parse_and_bind('\ C-y:kill-whole-line')


我再也无法忍受输入'exit()'而且很高兴看到martineau / Triptych的伎俩:

我稍微篡改了它(卡在.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

答案 17 :(得分:2)

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

from os import popen
with popen('clear') as f:
    clear = f.read()

print clear

在我的机器上,字符串为'\x1b[H\x1b[2J'

答案 18 :(得分:1)

我可能会迟到,但这是一个非常简单的方法

类型:

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

那么你想要清除屏幕只需输入你的代码

cls()

最好的方式! (信用:https://www.youtube.com/watch?annotation_id=annotation_3770292585&feature=iv&src_vid=bguKhMnvmb8&v=LtGEp9c6Z-U

答案 19 :(得分:1)

如果它在mac上,那么一个简单的cmd + k应该可以解决问题。

答案 20 :(得分:1)

只需使用此..

print '\n'*1000

答案 21 :(得分:1)

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

%clear

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

或点击&#34;选项&#34;在Console环境中选择&#34; Restart kernel&#34;这会删除所有内容。

答案 22 :(得分:1)

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

答案 23 :(得分:1)

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

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

def clear():
    print('\n' * 50)

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

clear()

就是这样。 PS:无论如何你都可以命名你的功能。我看到人们使用“刮水器”“擦”和变化。

答案 24 :(得分:1)

这对于一个明确的

怎么样?
- os.system('cls')

这差不多可能!

答案 25 :(得分:0)

完美的案例:

y=$(exec curl -s http://www.example.com &)

或直接:

function incrementCounter_(e) { 
  var sheetToWatch = 'Sheet1'; 

  // Define range here 
  // Sample range is B2:B51
  var cellToWatchRange = { 
    top : 2,
    bottom : 51,
    left : 2,
    right : 2
  };

  // Exit if we're out of range or not the sheet we are looking for
  var thisRow = e.range.getRow();
  var thisCol = e.range.getColumn();
  var sheet = e.range.getSheet(); 
  if (thisRow < cellToWatchRange.top || thisRow > cellToWatchRange.bottom
  || thisCol < cellToWatchRange.left || thisCol > cellToWatchRange.right
  || !e || !e.range || sheet.getName() !== sheetToWatch) {
    return;
  }

  // Offset column to 2 to the right (D)
  var cell = sheet.getRange(thisRow, thisCol + 2); 
  cell.setValue((Number(cell.getValue()) || 0) + 1); 
}

答案 26 :(得分:0)

Arch Linux(已在xfce4-terminal中使用Python 3进行了测试):

# Clear or wipe console (terminal):
# Use: clear() or wipe()

import os

def clear():
    os.system('clear')

def wipe():
    os.system("clear && printf '\e[3J'")

...已添加到~/.pythonrc

  • clear()清除屏幕
  • wipe()擦除整个终端缓冲区

答案 27 :(得分:0)

使用名为OS的软件包(如果要清除为函数),这是一个非常简单的技巧:

  

键盘快捷键

cmd / ctrl + k


  

Python代码编辑器

#from the package OS, import: system, and name.

from os import system, name

#create a function called clear(). You can name this anything you want.
def clear():

#the method is different depending on what computer you are using.
    if name = "nt":

        #if windows, linux
        _ = system("cls")

    else:
        #mac, etc.
        _ = system("clear")

# we use " _ = system("clear") " as the function system returns a number in this case, 0.

答案 28 :(得分:0)

如果不需要通过代码完成操作,只需按CTRL + L

答案 29 :(得分:0)

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


在bash中:

#!/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然后运行:

./whatyouwant.sh python

或python以外的东西(空闲,等等)。 这会询问你是否真的要退出,如果不是它重新运行python(或你给出的命令作为参数)。

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

在python中,只需要退出时输入exit()即可。

答案 30 :(得分:0)

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

  
    
      

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

    
  

答案 31 :(得分:0)

这应该是跨平台的,并且根据the os.system docs使用首选的subprocess.call代替os.system。应该在Python&gt; = 2.4。

中工作
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

答案 32 :(得分:0)

输入

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

答案 33 :(得分:0)

>>> ' '*80*25

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

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

答案 34 :(得分:0)

好的,所以这是一个技术性较差的答案,但我正在使用Notepad ++的Python插件,结果你可以通过右键单击它并单击“清除”来手动清除控制台。希望这有助于那里的人!

答案 35 :(得分:0)

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

http://www.google.com/?q=x#q=terminfo

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

$ tput clear | od -t x1z 0000000 1b 5b 48 1b 5b 32 4a&gt; [H. [2J&lt; 0000007

答案 36 :(得分:-2)

一个简单的班轮是:

# for windows name is nt

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

clear()

答案 37 :(得分:-2)

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