Cla*_*rts 1 python console urwid
我试图基本上清除控制台行,但不是在不使用空格的情况下清除整个控制台窗口,这样我就不会从上次打印的内容中获得额外的字符。例如:
# This causes characters from the last thing printed:
print("I don't know you.", end="\r")
print("Hello Jim!", end="\r")
# Yields the following (without the quotations) -->
# "Hello Jim!ow you."
Run Code Online (Sandbox Code Playgroud)
现在要解决这个问题可以这样做:
# This causes characters from the last thing printed:
print("I don't know you.", end="\r")
print("Hello Jim!", end="\r")
# Yields the following (without the quotations) -->
# "Hello Jim!ow you."
Run Code Online (Sandbox Code Playgroud)
我如何
"Hello Jim!"而不是"Hello Jim! "(两者显然都没有引号)具体来说,当改变尺寸时(例如控制台宽度从 17 到 30),控制台中会发生类似的情况,在我的情况下,这种情况经常发生:
Hello Jim! Hello Jim!
Hello Jim! Hello Jim
! Hello Jim! Hello
Jim! Hello Jim! H
ello Jim! Hello Jim!
Run Code Online (Sandbox Code Playgroud)
我对一种全新的做事方式持开放态度,比如使用urwid或类似的东西。
您可以使用 EL(擦除线)控制序列。在Python中,最简单的构建方法是:
"\033[2K"
Run Code Online (Sandbox Code Playgroud)
该数字控制 EL 序列的行为:
EL 序列不移动光标。
此行为相当标准,但如果您想确定,可以使用 查询 terminfo 数据库tput。
长话短说:
print("I don't know you.", end="\r")
print("\033[2KHello Jim!", end="\r")
Run Code Online (Sandbox Code Playgroud)