Python用のcoloramaをインストールしました。次のようにモジュールをインポートしました。
import colorama
from colorama import init
init()
from colorama import Fore, Back, Style
print Fore.RED + "My Text is Red"
そして、ANSI文字を返します。
esc[31mMy Text is Red
これは私が期待したものではありません。私は何か間違ったことをしていますか?.
ありがとう。
Windows 7 x64でも同じ問題が発生しましたが、init呼び出しに引数convert=True
を追加するだけで、新しいものをインストールしなくても、ようやく色が機能するようになりました。
from colorama import init, Fore, Back, Style
init(convert=True)
print(Fore.RED + 'some red text')
Ansiconでパッチを適用せずに、Windowscmd.exeで色を機能させることに成功したことはありません。パッチを適用した後、ANSIカラーコードはcoloramaのようなものを使用しなくても機能します(これは私にとっても機能しませんでした)。
Cmd.exeにAnsiconでパッチを適用するには、次の手順を実行します。
ansicon.exe –i
経由: https://stackoverflow.com/a/4749307/191902
また、NVidiaグラフィックカードをお持ちの場合は、環境変数「ANSICON_EXC」を「nvd3d9wrap.dll」に設定する必要がある場合があります。
私は遅れていることを知っていますが、これはうまくいけば、まだ答えを探している人に役立つでしょう。
PyPIに関するColoramaのドキュメント からの記述:
Coloramaは、Termcolorなどの既存のANSIライブラリと組み合わせて使用できます。
from colorama import init from termcolor import colored # use Colorama to make Termcolor work on Windows too init() # then use Termcolor for all colored text output print(colored('Hello, World!', 'green', 'on_red'))
これは、Anaconda Prompt(本質的にはcmd.exe
)Windows 1064ビットの場合。
ColoramaのネイティブANSIシーケンスは、何らかの理由で機能していないようです。外部のANSIライブラリ(つまり、Termcolor)が私のためにトリックを行いました。
これは非常に古い質問だと思いますが、既存の回答はどれも役に立たなかったので、他の人が同じ船に乗っている場合に備えて解決策を投稿します。私の場合、問題はstdout
からsys
をインポートしてから、colorama
を初期化していたことでしたが、これは機能しません。
_>>> from colorama import Fore, Style, init
>>> from sys import stdout
>>> init()
>>> stdout.write(Fore.RED + Style.BRIGHT + "Test" + Style.RESET_ALL + "\n")
[31m[1mTest[0m
_
https://pypi.org/project/colorama ごとに、これは次の理由によるものです。
Windowsでは、coloramaは_
sys.stdout
_と_sys.stderr
_をプロキシオブジェクトに置き換えることで機能します。プロキシオブジェクトは、.write()
メソッドをオーバーライドして機能します。
したがって、stdout
afterをインポートする必要があります。これは、init
の呼び出しの一部として置き換えられました。
_>>> from colorama import Fore, Style, init
>>> init()
>>> from sys import stdout
>>> stdout.write(Fore.RED + Style.BRIGHT + "Test" + Style.RESET_ALL + "\n")
Test <--- This is now bright red.
_
お役に立てれば!
WindowsにはANSI
がないため、これは正常です。
tendo.colorer のように試してみてください。これにより、すべてのプラットフォームでカラーリングが有効になります。
注:tendo.colorerはログに色を追加しますが、他の用途に使用する方法がわかると思います。コードの前にインポートするだけで間違いがなければ、問題は解決します。