2017-09-24 1 views
-1

subprocess.call()에서 shell = True가 될 때까지 Windows 인쇄에서 Python 3.7이 ANSI 색상 코드에 대해 예상대로 작동하지 않습니다.Python ANSI 색상 코드

아래 링크에서 ANSI 색상 코드는 "print"명령을 사용하여 즉시 작동해야 함을 나타냅니다.

How to print colour/color in python? Print in terminal with colors using Python?

두 번째

정확히 무슨 뜻인지 확실하지 VT100 에뮬레이션을 ... 언급하고있다. 파이썬에서 같은 방식으로 작동해야한다고 (순진하게) 생각할 수 있도록 색상을 출력하는 배치 파일을 작성할 수 있습니다.

그러나 나는 내가

print(u"\u001b[31mHelloWorld") 

내가 볼 수 아니다 때 때문에 인스턴스에 대한 ESC 문자는 "주석"되고 있다는 것을 (?) 것 같은 ANSI 컬러 코드를 사용할 수 없습니다입니다 Windows에서 ESC 문자가 필요한 것처럼 보이고 파이썬 쉘에 "[?]"(물음표가있는 상자)로 인쇄합니다.

여기에 누락 된 것이 있습니까?

답변

0

나는 답을 찾았습니다. 종종 나는 충분히 멀리 보지 않았다. 이 크로스 플랫폼 기능에

색상 파노라마 모듈은

py -m pip install colorama

와 함께 설치 될 수 있으며, init

colorama.init()

라는 모듈의 루트에 메소드 정의와 함께 제공 그것은 윈도우에서만 유용합니다 (역전을 위해 활성 터미널 상태를 저장하고 ANSI 코드를 전처리하기 위해 터미널을 씁니다). 또는 다른 운영 체제.

나는 ctypes를 사용하고 활성 터미널에서 Interpret 플래그를 직접 설정하는보다 가벼운 솔루션을 구현할 생각이다. 좀 더 자세한 정보에 관심이 있다면

여기를 참조 :

https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

출력 시퀀스 출력 스트림에 기록 할 때 ENABLE_VIRTUAL_TERMINAL_PROCESSING 경우 다음 터미널 시퀀스, 콘솔 호스트에 의해 차단된다 플래그는 SetConsoleMode 플래그을 사용하여 화면 버퍼 핸들에 설정됩니다. DISABLE_NEWLINE_AUTO_RETURN 플래그는 모든 행의 마지막 열에 기록 된 문자와 관련하여 다른 터미널 에뮬레이터의 커서 위치 지정 및 스크롤 동작을 에뮬레이션하는 데 유용 할 수 있습니다.

강조 광산.

관련 문제