Linuxでpython)でこれを実行すると、次のように機能します。
start = "\033[1;31m"
end = "\033[0;0m"
print "File is: " + start + "<placeholder>" + end
しかし、Windowsで実行すると機能しません。どうすれば、ANSIエスケープコードをWindowsでも機能させることができますか?
WindowsでstdoutのANSIカラーを有効にするPythonモジュール? をチェックして、それが役立つかどうかを確認できます。
colorama モジュールはクロスプラットフォームのようです。
Coloramaをインストールします:
pip install colorama
次に:
import colorama
colorama.init()
start = "\033[1;31m"
end = "\033[0;0m"
print "File is: " + start + "<placeholder>" + end
Win 10(cmdでネイティブANSIサポートを使用)を使用している場合は、 resolvedin Python 3.7 としてマークされたバグがあります(ただし、表示されません)実際に修正されました)。
回避策の1つは、印刷する前にsubprocess.call('', Shell=True)
を追加することです。
あなたは見ることができます https://github.com/kennethreitz/clint
READMEから:
>>> from clint.textui import colored, puts
>>> puts(colored.red('red text'))
red text
# It's red in Windows, OSX, and Linux alike.
ここにセミコロンを追加してみてください\033[;
、セミコロンがないと望ましくない効果があります。
start = "\033[;1;31m"
end = "\033[;0;0m"
インターネット上の何千もの細かい答えによると、ANSIエスケープシーケンスの送信は機能するはずですが、1つのあいまいな詳細に遭遇するのに2日半かかりました。秘訣は、特定のレジストリキーを設定する必要があるということです。私は(今日だけ)Windows 10 Enterprise、バージョン1709、ビルド16299を使用しています。
HKEY_CURRENT_USERのコンソールの下のTrimLeadingZerosとWindowAlphaの間にVirtualTerminalLevelがあるはずです。存在しない場合は、先に進んで作成してください。 REG_DWORDです。その値を1に設定します。新しいターミナルを開き、Pythonを実行して、少し楽しんでください。
print("\033[48;2;255;140;60m ORANGE BACKGROUND \033[48;2;0;0;0m")
https://github.com/ytdl-org/youtube-dl/issues/15758 を参照して、これについて私よりも多くのことを知っている人々の記事を読んでください。
whyを思い出せたら、Pythonプログラムの出力...
これが私が長い間探していた解決策です。 標準ライブラリのctypes
モジュールを使用するだけです。デフォルトでは、WindowsではPython 3.x、onlyでインストールされます。したがって、OSがWindowsであるかどうかを確認してください。それを使用するには(たとえば、platform.system
を使用)。
from platform import system
if "win" in system().lower(): #works for Win7, 8, 10 ...
from ctypes import windll
k=windll.kernel32
k.SetConsoleMode(k.GetStdHandle(-11),7)
それが終わったら、Unixオペレーティングシステムを使用しているかのように、ASCII特殊文字(赤い色の場合は\x1b[31m
など)を使用できます。
print("\x1b[31mERROR\x1b[0m")
モジュール(coloramaやtermcolorなど)をインストールする必要がないため、このソリューションが気に入っています。
簡単なモジュールを作成しました。次の場所で入手できます。 http://pypi.python.org/pypi/colorconsole
Windows、Mac OS X、Linuxで動作します。 LinuxおよびMacではANSIを使用しますが、Windowsではコンソール関数をネイティブに呼び出します。色、カーソル位置、キーボード入力があります。これはcursesの代わりにはなりませんが、単純なスクリプトやASCIIゲームで使用する必要がある場合に非常に役立ちます。
ドキュメントはここにあります: http://code.google.com/p/colorconsole/wiki/PageName
PS:これは Pythonを使用して色付きのターミナルで印刷しますか? の場合と同じ答えですが、返信にリンクする方法がわかりませんでした。