首页 > 解决方案 > 如何在 Python 中清除屏幕?

问题描述

我知道还有很多其他问题在问同样的问题,但它们都不适合我,我无法评论寻求帮助。他们只是不适合我。我已经尝试了各种各样的东西!我在 Mac 上,使用 Pycharm 和我认为是最新的 Python (v. 3),但我不确定。

1) Cmd + L 不起作用。

2)

import os
clear = lambda: os.system('clear')
clear()
well = input("The screen is not clear.")

说“未设置TERM环境变量。”

3)

absolutely_unused_variable = os.system("clear")

说同样的术语。

4)这个

    import subprocess, platform

    if platform.system()=="Windows":
        subprocess.Popen("cls", shell=True).communicate()
    else: #Linux and Mac
        print("\033c", end="")

在最后一行为我打印 ac。

我究竟做错了什么?我尝试了以上所有方法,使用 clear 和 cls 的所有可能组合。为了确保这不是我的 Pycharm,我在 IDLE Python 3.7.2 上进行了所有尝试。我完全拒绝 \n 100 次。有什么建议么?:)

标签: pythonpython-3.xconsolepycharm

解决方案


在类 Unix 系统中,控制台窗口是一种字符设备,可以是 GUI 窗口和实际终端中的任何东西。不同类型的“设备”需要不同的方法来清除屏幕。通常,当在终端中启动 shell 时,TERM 环境变量设置为一个值,该值指示它是什么类型的终端,并且清除屏幕的例程会参考此值以确定要写入哪些字符以清除它。

如果您在 Mac 终端窗口中尝试第一个解决方案,它将清除屏幕。如果您在不使用 Python 的情况下尝试它,但取消设置 TERMINAL 环境变量,那么即使系统“清除”命令也不知道如何清除屏幕:

$ echo $TERM
xterm-256color
$ unset TERM
$ clear
TERM environment variable not set.

您遇到的问题不是特定于 Python,而是 PyCharm 终端窗口,它似乎没有设置此环境变量。

可能是 PyCharm 终端窗口不支持 ANSI 或其他用于清除屏幕的序列。至少,它似乎确实支持一些彩色文本的转义序列。可能是它没有正确设置环境变量。您可以export TERM=ansi在终端中尝试,然后尝试运行您的 clear 命令以查看是否有效。

您可能会尝试的另一件事是使用Click以独立于设备和平台的方式清除屏幕。总的来说,点击非常棒。例如,即使在终端中取消设置 TERM 后,以下内容也适用于我:

import click
click.clear()

推荐阅读