gpt4 book ai didi

Python - 更优雅地清除终端屏幕

转载 作者:行者123 更新时间:2023-11-28 20:41:04 25 4
gpt4 key购买 nike

我知道您可以使用 os.system 执行 clear 来清除 shell,但这种方式对我来说似乎很困惑,因为命令已记录在历史记录中并且是乱七八糟地解释为作为操作系统用户运行的命令。

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

最佳答案

print "\033c"

在我的系统上工作。

您还可以缓存由 clear 命令生成的清屏转义序列:

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

然后

print clear_screen_seq

任何时候你想清除屏幕。

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

您可以使用 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)

关于Python - 更优雅地清除终端屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34388390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com