【问题标题】:Python - Clearing the terminal screen more elegantlyPython - 更优雅地清除终端屏幕
【发布时间】:2015-12-21 03:04:50
【问题描述】:

我知道你可以通过使用os.system 执行clear 来清除shell,但是这种方式对我来说似乎很混乱,因为命令记录在历史记录中并且被解释为以用户身份运行到操作系统的命令。

我想知道是否有更好的方法来清除命令行脚本中的输出?

【问题讨论】:

  • 顺便说一句...clear 不是跨平台命令 iirc 它只能在 Windows 中工作(我认为 cls 在 linux 中工作)
  • @JoranBeasley:反过来说:clear,虽然不是 POSIX 实用程序,但在大多数类 Unix 平台上都是一个实用程序;相比之下,cls 是 Windows 命令处理器 cmd.exe内置命令。
  • 嗯,我知道是这样的:P

标签: python shell terminal


【解决方案1】:
print "\033c"

在我的系统上工作。

你也可以缓存clear命令产生的清屏转义序列:

import subprocess
clear_screen_seq = subprocess.check_output('clear')

然后

print clear_screen_seq

任何时候你想清屏。

在 POSIX 中定义了产生相同序列的tput clear command

您可以使用curses 来获取序列:

import curses
import sys

clear_screen_seq = b''
if sys.stdout.isatty():
    curses.setupterm()
    clear_screen_seq = curses.tigetstr('clear')

优点是您不需要调用curses.initscr() 来获取具有.erase().clear() 方法的窗口对象。

要在 Python 2 和 3 上使用相同的源代码,您可以使用 os.write() 函数:

import os
os.write(sys.stdout.fileno(), clear_screen_seq)

我系统上的clear 命令也尝试使用tigetstr("E3") 清除回滚缓冲区。

这是clear.c command 的完整 Python 端口:

#!/usr/bin/env python
"""Clear screen in the terminal."""
import curses
import os
import sys

curses.setupterm()
e3 = curses.tigetstr('E3') or b''
clear_screen_seq = curses.tigetstr('clear') or b''
os.write(sys.stdout.fileno(), e3 + clear_screen_seq)

【讨论】:

【解决方案2】:

您可以使用 Python 接口来处理 ncurses,特别是 window.erase 和 window.clear。

https://docs.python.org/3.5/library/curses.html

【讨论】:

    【解决方案3】:

    我使用 2 个打印语句来清屏。

    清屏:

    print(chr(27) + "[2J")
    

    将光标移动到开始的第 1 行第 1 列:

    print(chr(27) + "[1;1f")
    

    我喜欢这种方法,因为你可以通过[<row>;<col>f将光标移动到任何你想要的地方

    chr(27) 是转义字符,引号中的内容告诉终端要做什么。

    【讨论】:

    • 好东西;为简化起见,请考虑使用嵌入式八进制转义序列\033 代替使用chr(27) + ... 合成您的字符串;例如,print("\033[1;1f")
    • 只是好奇,为什么使用八进制而不是十六进制?
    • 你可以使用任何一个;也许八进制的可读性稍强一些,因为它们仅由 digits 组成;比较 print('\033c')print('\x1bc')
    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 2015-11-09
    • 2019-10-29
    • 2011-07-19
    • 2011-01-29
    • 2016-01-31
    • 1970-01-01
    • 2023-01-05
    相关资源
    最近更新 更多