我怎样才能清除解释器控制台?

2024-11-26 08:36:00
admin
原创
147
摘要:问题描述:与大多数 Python 开发人员一样,我通常会打开一个控制台窗口并运行 Python 解释器来测试命令、dir()内容help() stuff等。和任何控制台一样,一段时间后,可见的过去命令和打印积压变得混乱,有时在多次重新运行同一命令时会令人困惑。我想知道是否以及如何清除 Python 解释器控制...

问题描述:

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

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

我听说过进行系统调用以及cls在 Windows 或clearLinux 上进行调用,但我希望可以命令解释器本身执行某些操作。

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


解决方案 1:

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

对于 Windows:

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

对于 Linux 来说则是:

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

解决方案 2:

这里有一些方便且跨平台的功能:

import os

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

# Now, to clear the screen
cls()

解决方案 3:

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

print("", end="")

更新 1:

由于这个答案引起了一些关注,您可能想知道它是如何工作的。上面的命令打印ANSI 转义码:

  • 代表ESC(ANSI 值 27)。

  • [是一个特殊的转义序列,称为控制序列引入器(CSI)。

  • 命令将光标移动到屏幕的左上角。

  • 清除从光标到屏幕末尾的屏幕。

可选参数end=""避免在执行这些命令后打印换行符,因此>>>保留在最上面一行。

更新2:

您可能希望使用一个附加参数来扩展上述命令 - x(之前J):

print("J", end="")
  • 如果x为 1,它将清除从光标到屏幕开头的内容。

  • 如果x是 2,它将清除整个屏幕并将光标移动到左上角。

  • 如果x是 3,它将清除整个屏幕并删除回滚缓冲区中保存的所有行

因此,此命令将清除所有内容,包括缓冲区:

print("", end="")

命令行:

要在 shell(控制台/终端)中清除屏幕,可以使用相同的命令。要清除整个屏幕并删除回滚缓冲区中保存的所有行,请在前面添加 3 J

printf ""

或者创建别名:

alias cls='printf ""'

解决方案 4:

嗯,这里有一个快速破解方法:

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

或者为了节省一些输入,将此文件放在您的 python 搜索路径中:

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

wipe = Wipe()

然后你就可以从解释器中随意执行这些操作了:)

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

解决方案 5:

在 Windows 上,有多种方法可以执行此操作:

1.使用键盘快捷键:

Press CTRL + L

2.使用系统调用方法:

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

3.使用换行符打印100次:

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

解决方案 6:

虽然这是一个老问题,但我想总结一下我认为其他答案中最好的,并添加我自己的一点建议,建议你把这些命令放到一个文件中,并设置你的 PYTHONSTARTUP 环境变量来指向它。由于我目前在 Windows 上,所以这有点偏颇,但很容易偏向其他方向。

以下是我找到的一些介绍如何在 Windows 上设置环境变量的文章:

    何时使用 sys.path.append 以及何时修改 %PYTHONPATH% 就足够了

    如何在 Windows XP 中管理环境变量

    配置系统和用户环境变量

    如何在 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 的 __repr__技巧将其更改exit()为 just 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

解决方案 7:

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

这与终端上的 OS X 是一样的。

解决方案 8:

完美的cls,也兼容Python2(在.pythonrc文件中):

from __future__ import print_function
cls = lambda: print("c", end='')

并可以通过以下方式从终端调用:

cls()

或者直接:

print("c", end='')

仅清除可见屏幕,与 Ubuntu 18.10 之前的命令完全相同clear。它不会清除回滚缓冲区。向上滚动将显示历史记录。

要模拟此行为,请插入一些终端行,然后按Ctrl+L并插入更多行。执行后print("", end=""),只会删除按“Ctrl + L”后插入的屏幕行。

c清除一切。

x1bc可能不会给出相同的结果,因为c十六进制转义的长度没有明确的限制。

解决方案 9:

我这样做的方法是编写如下函数:

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、OS X、Linux 和BSD ... 所有操作系统。

解决方案 10:

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

print ""

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

我认为使用 进行调用cls通常os不是一个好主意。想象一下,如果我设法更改了您系统上的 cls 或 clear 命令,并且您以管理员或 root 身份运行脚本。

解决方案 11:

下面是我结合在这个问题中发现的信息制作的跨平台(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()

解决方案 12:

Wiper 很酷。它的好处是我不必在它周围输入“()”。

以下是一个小小的变化

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

使用方法非常简单:

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

解决方案 13:

这是合并所有其他答案的最终解决方案。特点:

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

  2. 你可以按照你喜欢的方式使用它:

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

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

$ python clear.py
  1. 它是真正的多平台;如果它无法识别您的系统

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('
'*120)
 def __neg__(self): self()
 def __repr__(self):
  self();return ''

clear=clear()

解决方案 14:

如果是在 Mac 上,那么简单的Cmd+K就可以了。

解决方案 15:

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

解决方案 16:

clearLinux 和Windows 中的OS 命令cls会输出一个“魔法字符串”,您可以直接打印它。要获取该字符串,请使用 popen 执行命令并将其保存在变量中以供日后使用:

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

print clear

在我的计算机上,该字符串是'x1b[Hx1b[2J'

解决方案 17:

Arch Linux(使用xfce4-terminalPython 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()清除整个终端缓冲区

解决方案 18:

这样清晰一点怎么样

- os.system('cls')

这已经是尽可能短了!

解决方案 19:

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

(将其粘贴在 .pythonstartup 中)

# 我的 ctrl-l 已经起作用了,但这可能对其他人有帮助

# 不过将提示留在窗口底部...

import readline

readline.parse_and_bind('\Cl: clear-screen')

这在 BASH 中有效,因为我在 .inputrc 中也有它,但由于某些

# 原因,当我进入 Python

readline.parse_and_bind('\Cy: 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

解决方案 20:

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

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

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

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

clear()

就是这样。PS:您可以随意命名您的函数。我见过有人使用“wiper”、“wipe”及其变体。

解决方案 21:

这里有两种很好的方法可以实现这一点:

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()

解决方案 22:

这应该是跨平台的,并且还使用首选的subprocess.call而不是os.system按照文档os.system所述。应该在 Python >= 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

解决方案 23:

好的,这个答案不太技术性,但我正在使用 Notepad++ 的 Python 插件,事实证明,你只需右键单击控制台并单击“清除”即可手动清除控制台。希望这对某些人有所帮助!

解决方案 24:

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

解决方案 25:

>>> ' '*80*25

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

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

解决方案 26:

我正在使用 Spyder (Python 2.7),为了清理解释器控制台,我使用

%清除

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

或者我单击控制台环境中的“选项”,并选择“重新启动内核”以删除所有内容。

解决方案 27:

上面提到了魔法字符串 - 我相信它们来自 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                             >.[H.[2J<
0000007

解决方案 28:

我刚刚读完《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()。

解决方案 29:

就用这个..

`print '
'*1000`

解决方案 30:

从 replit使用clear()

from replit import clear
clear()
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用