Python 删除命令中的多行将打印ASCII控制字符
使用Python3.7,我试图在命令窗口(Windows10-cmd)中重写多行输出。对于一行,这很简单,因为我可以使用回车再次打印这行Python 删除命令中的多行将打印ASCII控制字符,python,ascii,Python,Ascii,使用Python3.7,我试图在命令窗口(Windows10-cmd)中重写多行输出。对于一行,这很简单,因为我可以使用回车再次打印这行 print('\r only once',end='') print('\r only once',end='') 但是,如果有多行,这将不起作用。现在我尝试使用ascii控件字符来实现这一点。这通常是在一个循环中完成的,以显示进度,但有一个最小的示例 import os import sys import time print("upper") #mo
print('\r only once',end='')
print('\r only once',end='')
但是,如果有多行,这将不起作用。现在我尝试使用ascii控件字符来实现这一点。这通常是在一个循环中完成的,以显示进度,但有一个最小的示例
import os
import sys
import time
print("upper") #moves back in line
print("lower") #moves back in line
#time.sleep(1)
#os.system("pause")
sys.stdout.write("\033[K") #clear line
sys.stdout.write("\033[F") #back to previous line
sys.stdout.write("\033[K") #clear line
sys.stdout.write("\033[F") #back to previous line
sys.stdout.write("\033[K") #clear line
sys.stdout.write("\033[F") #back to previous line
print("new upper") #moves back in line
print("new lower") #moves back in line
如果它是这样运行的,或者未注释的time.sleep(1)
上
降低
[K[F[K[F[K[F]新上部
新的较低版本
如果未注释操作系统(“暂停”)(仅限windows),则输出正确
新上部
新鞋面
是否有人知道为什么操作系统(“暂停”)会更改控制字符的行为,或者通常如何启用它们?或者,是否有人有其他的(或者更好的)方法关于如何替换python的多行输出的想法?您正在尝试使用ANSI转义序列,至少在默认情况下,windows不支持ANSI转义序列 我听说您可以使用来启用这些,一旦安装,在程序开始时执行以下操作:
import colorama
colorama.init()
您正在尝试使用ANSI转义序列,windows至少在默认情况下不支持该序列 我听说您可以使用来启用这些,一旦安装,在程序开始时执行以下操作:
import colorama
colorama.init()
@Tylerr的答案是有效的。但是我刚刚发现,如果你在一个版本更新后赢了10个(版本1607,02.08.2016,可能现在大多数赢了10个用户)您可以通过添加或更改VirtualTerminalLevel注册表来启用对cmd.exe的本机支持,如图所示。@Tylerr answer有效。不过,我刚刚发现,如果您在一次通用更新(版本1607,02.08.2016)后赢得了10分,那么目前大多数Win 10用户可能已经赢得了该版本)您可以通过添加或更改VirtualTerminalLevel注册表来启用cmd.exe的本机支持,如图所示。我今天遇到了同样的问题。我使用的是Win10 Pro 1903 我最终下载了Windows终端,它解决了我所有的问题!() ANSI转义字符(如“\x1b[1A”)现在可以使用了 在使用PowerShell之前: PS.示例来自:
但在Windows终端中,它是有效的!我今天遇到了同样的问题。我使用的是Win10 Pro 1903 我最终下载了Windows终端,它解决了我所有的问题!() ANSI转义字符(如“\x1b[1A”)现在可以使用了 在使用PowerShell之前: PS.示例来自: 但在Windows终端中,它可以工作