社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

这在python'\x1b[2k'中意味着什么?

Alex • 4 年前 • 2634 次点击  

我刚刚了解到要清除用python打印的行,请执行以下操作: sys.stdout.write('\x1b[2k')

为什么这么复杂?那奇怪的代码是什么意思?在print命令中还有其他选择吗?

打印确实提供了“结束”选项,允许在行中来回移动,但无法清除所打印的内容。覆盖via \r并不总是有效,特别是当新行比旧行短时。你会从旧线路上找到痕迹,所以我需要先清除。 谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38258
 
2634 次点击  
文章 [ 4 ]  |  最新文章 4 年前
Leon Wiesen
Reply   •   1 楼
Leon Wiesen    5 年前

但是,有一种更有效的方法可以做到这一点: 您可以像往常一样使用print()命令,并使用

os.system("cls") # For Windows

os.system("clear") # For Linux
Xin Wang
Reply   •   2 楼
Xin Wang    5 年前

这个叫 ANSI escape code . 2K 是的名称 Erase in Line . 从链接引用:

删除行的一部分。如果n为0(或丢失),则从光标清除到行尾。如果n为1,则从光标到行首清除。如果n为2,则清除整行。光标位置不变。

你也可以试试 echo -e '\x1b[2k' 为了更好的理解。

Reedinationer
Reply   •   3 楼
Reedinationer    5 年前

替代单行打印

我有一个脚本可以打印鼠标的x,y坐标,如下所示:

import pyautogui
import time
while True:
    x, y = pyautogui.position()
    position_string = "X: {} Y: {}".format(str(x).rjust(4), str(y).rjust(4))
    print(position_string, end='')
    print('\b' * len(position_string), end='', flush=True)
    time.sleep(1)

在这里我将指出,您可以打印退格字符(“\b”)屏幕上有字符的次数。( len(position_string) )以及与 end='' flush=True 选项这将持续打印在控制台中的一行上。我还应该注意到,这不适用于空闲状态,而只适用于实际的命令行!在空闲时,退格符实际上被打印成一些奇怪的方形…

TkTech
Reply   •   4 楼
TkTech    5 年前

\x1b[2K 被称为 ANSI terminal control sequence . 它们是20世纪70年代的遗留物,现在仍在使用(但已广泛扩展)来控制终端仿真器。

\x1b 是用于转义的ASCII(字面上是键盘上的Esc键)。 [2K 是命令“删除当前行”。

在python中有许多库用于处理终端,例如 Urwid . 这些库将隐藏终端的内部工作,并为您提供更高级别的构造来创建TUIS。