8

注:実際に行う方法を調査した後、この質問をしています。多少似ていますが、実際には私の質問とは異なる他の質問は次のとおりです。

  1. Python スクリプトの色分け
  2. スクリプト内でのカラー ライブラリのインポート
  3. ツールを使用して、Python コードを色分けSolarizedするなどのツールを改善します。Vim

私が探しているもの: 私はすでに単純な python スクリプト (test.py など) を持っており、Gnome ターミナルから実行しています。

python test.py

test.pyターミナルでいくつかのエラーを出力します。エラー例:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    with open('', 'rb') as csvfile:
IOError: [Errno 2] No such file or directory: ''

エラー キーワードを太字の赤にする必要があります。たとえば、行番号を特定の色にして、エラーを簡単に追跡できるようにします。

ご覧のとおり、Stackoverflow は既にエラーを適切に色分けしています。私のGnome端末では、出力は単色です。端末でこのような素敵な色分けされた出力を取得するにはどうすればよいですか?

ありがとうございました!

4

4 に答える 4

1

クイック ハック ソリューション、UNIX のみ。stdout を .py サフィックス付きのファイルにリダイレクトします。次にvimcat、カラー化された出力に使用するファイルを表示します。これをすべてシェル関数にまとめます。たとえば、bash の場合。

# print colorised python output
colorized() {
    local out='out.py'
    if (( $# < 1)) 
    then
        printf "Usage: %s pyhon-script\n" $0 >&2
        return 1;
    fi
    if [ -e $out ]; 
    then
        rm $out
    fi
    python $@ 2> $out
    empty=$(stat $out | grep empty)
    if (( $? == 1 ))
    then
        vimcat $out
    fi
}
于 2015-12-01T20:03:04.857 に答える
0

FWIW、スクリプトを関数でラップし、ブロック内で関数mainを呼び出し、エラーメッセージを取得し、色付けして印刷できます。maintry ... except

エラー メッセージを取得するには、 を呼び出す必要がありますsys.exc_infotraceback.format_exceptionスタック トレースと例外情報をフォーマットします。基本的な正規表現を使用すると、色を赤に変えるすべて..Err..の内部をラップできます。\033[91m...Err...\033[0m

def main():
   with open('xxx.txt', 'r') as fin:
        return fin.read()

try:
    main()
except:
    import re
    from sys import exc_info
    from traceback import format_exception

    RED, REV = r'\033[91m', r'\033[0m'
    err = ''.join(format_exception(*exc_info()))
    print(re.sub(r'(\w*Err\w*)', RED + r'\1' + REV, err))

結果:

エラー

于 2014-08-03T21:30:06.700 に答える