[python] 파이썬으로 터미널에서 컬러 텍스트를 인쇄하는 방법은 무엇입니까?

파이썬에서 어떻게 컬러 텍스트를 터미널에 출력 할 수 있습니까? 솔리드 블록을 나타내는 최고의 유니 코드 기호는 무엇입니까?



답변

이것은 어느 플랫폼에 있는지에 따라 다릅니다. 이를 수행하는 가장 일반적인 방법은 ANSI 이스케이프 시퀀스를 인쇄하는 것입니다. 간단한 예를 들어, 다음은 블렌더 빌드 스크립트 의 파이썬 코드입니다 .

class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'

이와 같은 코드를 사용하려면 다음과 같이 할 수 있습니다

print(bcolors.WARNING + "Warning: No active frommets remain. Continue?" + bcolors.ENDC)

또는 Python3.6 +를 사용하는 경우 :

print(f"{bcolors.WARNING}Warning: No active frommets remain. Continue?{bcolors.ENDC}")

이것은 OS X, linux 및 windows를 포함한 유닉스에서 작동합니다 ( ANSICON 을 사용 하거나 Windows 10에서 VT100 에뮬레이션 을 활성화 한 경우 ). 색상 설정, 커서 이동 등을위한 ansi 코드가 있습니다.

이것으로 복잡해질 것이라면 (그리고 게임을 작성하는 것처럼 들린다) “저주”모듈을 살펴보아야합니다.이 모듈은 많은 복잡한 부분을 처리합니다. 파이썬 저주 HOWTO는 좋은 소개합니다.

확장 ASCII를 사용하지 않는 경우 (예 : PC가 아닌 경우) 127 미만의 ASCII 문자가 표시되며 ‘#’또는 ‘@’이 블록에 가장 적합합니다. 터미널이 IBM 확장 ASCII 문자 세트를 사용하고 있는지 확인할 수 있으면 더 많은 옵션이 있습니다. 문자 176, 177, 178 및 219는 “블록 문자”입니다.

“Dwarf Fortress”와 같은 일부 최신 텍스트 기반 프로그램은 그래픽 모드에서 텍스트 모드를 에뮬레이트하고 클래식 PC 글꼴의 이미지를 사용합니다. Dwarf Fortress Wiki 에서 사용할 수있는 비트 맵 중 일부를 볼 수 있습니다 ( 사용자 제작 타일셋 ).

텍스트 모드 데모 콘테스트 텍스트 모드에서 그래픽 작업을 수행하기위한 더 많은 자원을 가지고있다.

흠 .. 나는이 대답에 약간의 영향을 미쳤다고 생각한다. 하지만 서사적 인 텍스트 기반 어드벤처 게임을 계획하고 있습니다. 컬러 텍스트로 행운을 빕니다!


답변

아무도 파이썬 termcolor 모듈을 언급하지 않은 것에 놀랐습니다 . 사용법은 매우 간단합니다.

from termcolor import colored

print colored('hello', 'red'), colored('world', 'green')

또는 파이썬 3에서 :

print(colored('hello', 'red'), colored('world', 'green'))

그러나 게임 프로그래밍 및 “컬러 블록”에 대해서는 충분히 정교하지 않을 수 있습니다 …


답변

대답은 Python의 모든 크로스 플랫폼 색상에 대한 Colorama 입니다.

Python 3.6 예제 스크린 샷 :
스크린 샷 예


답변

색상 / 스타일을 시작하는 문자열을 인쇄 한 다음 문자열을 인쇄 한 다음 색상 / 스타일 변경을 종료합니다 '\x1b[0m'.

print('\x1b[6;30;42m' + 'Success!' + '\x1b[0m')

녹색 배경의 성공 사례

다음 코드를 사용하여 쉘 텍스트의 형식 옵션 표를 가져옵니다.

def print_format_table():
    """
    prints table of formatted text format options
    """
    for style in range(8):
        for fg in range(30,38):
            s1 = ''
            for bg in range(40,48):
                format = ';'.join([str(style), str(fg), str(bg)])
                s1 += '\x1b[%sm %s \x1b[0m' % (format, format)
            print(s1)
        print('\n')

print_format_table()

밝고 어두운 예 (완료)

여기에 이미지 설명을 입력하십시오

어두운 조명 예 (일부)

출력의 상단


답변

색상으로 시작하는 문자열과 색상으로 끝나는 문자열을 정의한 다음 앞에 시작 문자열과 끝 문자열을 사용하여 텍스트를 인쇄하십시오.

CRED = '\033[91m'
CEND = '\033[0m'
print(CRED + "Error, does not compute!" + CEND)

이에 다음을 생산 bash에, urxvtZenburn 스타일의 색 구성표 :

출력 색상

실험을 통해 더 많은 색상을 얻을 수 있습니다.

컬러 매트릭스

참고 : \33[5m\33[6m깜박입니다.

이 방법으로 풀 컬러 컬렉션을 만들 수 있습니다.

CEND      = '\33[0m'
CBOLD     = '\33[1m'
CITALIC   = '\33[3m'
CURL      = '\33[4m'
CBLINK    = '\33[5m'
CBLINK2   = '\33[6m'
CSELECTED = '\33[7m'

CBLACK  = '\33[30m'
CRED    = '\33[31m'
CGREEN  = '\33[32m'
CYELLOW = '\33[33m'
CBLUE   = '\33[34m'
CVIOLET = '\33[35m'
CBEIGE  = '\33[36m'
CWHITE  = '\33[37m'

CBLACKBG  = '\33[40m'
CREDBG    = '\33[41m'
CGREENBG  = '\33[42m'
CYELLOWBG = '\33[43m'
CBLUEBG   = '\33[44m'
CVIOLETBG = '\33[45m'
CBEIGEBG  = '\33[46m'
CWHITEBG  = '\33[47m'

CGREY    = '\33[90m'
CRED2    = '\33[91m'
CGREEN2  = '\33[92m'
CYELLOW2 = '\33[93m'
CBLUE2   = '\33[94m'
CVIOLET2 = '\33[95m'
CBEIGE2  = '\33[96m'
CWHITE2  = '\33[97m'

CGREYBG    = '\33[100m'
CREDBG2    = '\33[101m'
CGREENBG2  = '\33[102m'
CYELLOWBG2 = '\33[103m'
CBLUEBG2   = '\33[104m'
CVIOLETBG2 = '\33[105m'
CBEIGEBG2  = '\33[106m'
CWHITEBG2  = '\33[107m'

테스트를 생성하는 코드는 다음과 같습니다.

x = 0
for i in range(24):
  colors = ""
  for j in range(5):
    code = str(x+j)
    colors = colors + "\33[" + code + "m\\33[" + code + "m\033[0m "
  print(colors)
  x=x+5


답변

ANSI 이스케이프 시퀀스에 대해 배우고 싶습니다. 다음은 간단한 예입니다.

CSI="\x1B["
print(CSI+"31;40m" + "Colored Text" + CSI + "0m")

자세한 내용은 http://en.wikipedia.org/wiki/ANSI_escape_code를 참조하십시오 .

블록 문자의 경우 \ u2588과 같은 유니 코드 문자를 사용해보십시오.

print(u"\u2588")

함께 모아서:

print(CSI+"31;40m" + u"\u2588" + CSI + "0m")


답변

Windows 10에서 ANSI 코드를 사용하는 방법을 찾았으므로 내장되지 않은 모듈없이 텍스트 색상을 변경할 수 있기 때문에 응답합니다.

이 작업을 수행하는 행 os.system("")은 터미널 또는 ANSI 시스템 코드를 인쇄 할 수있는 다른 시스템 호출입니다.

import os

os.system("")

# Group of Different functions for different styles
class style():
    BLACK = '\033[30m'
    RED = '\033[31m'
    GREEN = '\033[32m'
    YELLOW = '\033[33m'
    BLUE = '\033[34m'
    MAGENTA = '\033[35m'
    CYAN = '\033[36m'
    WHITE = '\033[37m'
    UNDERLINE = '\033[4m'
    RESET = '\033[0m'

print(style.YELLOW + "Hello, World!")

참고 :이 옵션은 다른 Windows 옵션과 동일한 옵션을 제공하지만이 방법을 사용하더라도 ANSI 코드를 완전히 지원하지는 않습니다. 모든 텍스트 장식 색상이 작동하는 것은 아니며 모든 ‘밝은’색상 (코드 90-97 및 100-107)은 일반 색상 (코드 30-37 및 40-47)과 동일하게 표시됩니다.

편집 : 더 짧은 방법을 찾은 @jl에게 감사드립니다.

tl; dr : os.system("")파일 상단 근처에 추가 하십시오.

파이썬 버전 : 3.6.7