python - 如何在 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 次。有什么建议么?:)
解决方案
在类 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()
推荐阅读
- jenkins - 在 jenkins 构建管道中运行 serverspec 脚本
- typescript - 打字稿中的记录类型是什么?
- netlogo - 流量问题,Netlogo
- c++ - c ++输出数组中的最高元素
- reactjs - 在 Redux 中更新深度嵌套数组的状态时遇到问题
- java - 如何在没有注入列表的情况下直接获取 Spring 中排序最高的 bean?
- reactjs - 如何在不重新渲染的情况下更改图标的颜色(TextField 失去焦点)
- java - 如何处理/优化 Android 应用程序中的高内存使用情况
- sql - SQL - 提取两个字符之间的子字符串
- vba - 为什么我在此 MyCell 范围错误中出现类型不匹配?