ANSI颜色不适用于使用Windows终端的Windows 10上的Git Bash

new9mtju  于 2023-03-19  发布在  Windows
关注(0)|答案(1)|浏览(144)

我在Windows 10和Windows终端上使用Git Bash,对于这个Python项目,ANSI转义序列不起作用。

from colorama import init, Fore
from sys import stdout

init(convert=True)

# code ...

我试着打印测试文本

# The code above
stdout.write('{GREEN}Test{RESET}'.format(GREEN=Fore.GREEN, RESET=Fore.RESET)

下面是输出:

←[32mTest←[0m

我确信我的终端支持ANSI序列,因为我已经用Bash,TS(Deno)和JS(NodeJS)测试过了。它们都能正常工作。我也在命令提示符下测试过,它在Python上也能正常工作。也许这是Git Bash执行Python本身的问题?
我也试过直接写十六进制代码,但还是不行。
write.py
Example image

4dbbbstv

4dbbbstv1#

在浪费了一些时间进行测试之后,显然只有使用print才有效

#!/usr/bin/env python3
from colorama import init, Fore
from sys import stdout

# Initialize
init()

# Using `Fore`
print(f'{Fore.GREEN}Test{Fore.RESET}')

# Using actuall hex values
print('\x1B[31mTest\x1B[0m')

# Using stdout.write
stdout.write(f'{Fore.GREEN}Test{Fore.RESET}\n')
stdout.write('\x1B[31mTest\x1B[0m\n')
Test
Test
←[32mTest←[39m
←[31mTest←[0m

Result

编辑:

使用input也将失败

# This will fail
xyz = input(f'{Fore.RED}Red text{Fore.RESET}')

# Consider using this as an alternative
print(f'{Fore.RED}Red text{Fore.RESET}', end='')
xyz = input()

相关问题