2017-12-24 29 views
0

저는 플랫폼 코드 작성을 위해 노력하고 있습니다. 즉, Windows 문제를 해결하는 것입니다. 현재 터미널에 표시 할 색상을 가져 오는 데 문제가 있습니다.ansi를 Windows에 인쇄하는 것은 IPython에서 작동하지만 그 밖의 다른 곳에서는 작동하지 않습니다. 왜?

저는 주로 색상으로 작업하기 위해 조각을 사용합니다. 내가 입력하면 : 나는 IPython을 열고 작동 같은 명령을 입력하면, 그러나

[31;01mhi[39;49;00m 

:

python -c "import pygments.console; print(pygments.console.colorize('red', 'hi'))" 
는 Win32 콘솔에서

(또는 그 문제에 대한 자식의 bash) 나는 이것을 얻을

$ ipython 
Python 3.6.3 |Anaconda, Inc.| (default, Nov 8 2017, 15:10:56) [MSC v.1900 64 bit (AMD64)] 
Type 'copyright', 'credits' or 'license' for more information 
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help. 

In [1]: import pygments.console 

In [2]: print(pygments.console.colorize('red', 'hi')) 
hi 

In [3]: 

참고이 예제에서 hi는 빨간색으로 인쇄됩니다.

어떻게 작동합니까? IPython이 뭔가 똑똑한 일을하고 있으며 ansi 시퀀스를 텍스트가 stdout으로 쓰여질 때 colorama의 windows 코드로 대체합니까? 또는 IPython이 ansi가 작동하도록 터미널에 뭔가를하고 있습니까?

어느 쪽이든, 내가 pygments 색상 화 기능을 Windows 환경에서 잘 동작하도록 만들 수있는 방법이 있습니까?

답변

0

사용중인 stdout 차단 방법이있는 것 같습니다. IPython이 아니라 그것 자체는 colorama입니다. 나는 그 모듈이 무엇을하고 있었는지 오해 한 것 같다.

은 ANSII 색상이 세션의 나머지 부분에 대한 작업을 ANSI의 원인이됩니다

import colorama 
colorama.init() 

을 실행하는 win32에서 cmd를 단말기에 올바르게 표시에 도착합니다.