Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除命令中的多行将打印ASCII控制字符_Python_Ascii - Fatal编程技术网

Python 删除命令中的多行将打印ASCII控制字符

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

使用Python3.7,我试图在命令窗口(Windows10-cmd)中重写多行输出。对于一行,这很简单,因为我可以使用回车再次打印这行

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终端中,它可以工作