2017-12-24 28 views
0

私はいくつかのコードをクロスプラットフォームで作っています。つまり、Windowsの問題と戦っています。私は現在、端末に表示する色を取得することに問題があります。ansiをwindowsに印刷するcmdはIPythonでは動作しますが、他の場所では動作しません。どうして?

ほとんどの場合、色で作業するためにピグメントを使用します。私が入力した場合:私はIPythonを開き、それが動作する同じコマンドを入力した場合、しかし

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

python -c "import pygments.console; print(pygments.console.colorize('red', 'hi'))" 
Win32コンソールで

(またはそのことについてのgit 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は何かを巧妙にやっていて、テキストがstdoutに書き込まれるときにansiシーケンスをcoloramaのWindowsコードに置き換えますか?あるいは、IPythonは、ansiを動作させるために端末に何かをしていますか?

どちらの方法でも、私はpygmentsの色付け関数をWindows環境でうまく動作させる方法はありますか?

答えて

0

stdoutインターセプト方法が使用されているようです。 IPythonでないのはcoloramaです。私はモジュールが何をしているのか誤解していたと思います。 ANSII色が

import colorama 
colorama.init() 

を実行するWin32 CMD端子に正しく表示するために取得するには

は、ANSIは、セッションの残りのために働くようになります。

関連する問題