2016-06-28 6 views
1

私は、次のコードを持っている:サブプロセスを持つことができますか?標準出力/標準エラー出力で色を保持していますか?

p = subprocess.Popen(cmd.split(' '), env=os.environ, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
    while(True): 
     log.info(p.stdout.readline()) 
     if(p.poll() is not None): 
     break 

それが発行されたすべての色を削除しているという事実を除いて、[OK]を動作します。これを保持する方法はありますか?

+1

あなたはどのコマンドを実行していますか? 'grep'のようなプログラムは、使用している出力ファイルのタイプをチェックし、端末のように見えない場合はカラーコードを出力しません。常にカラーコードを送るようにしたければ、オプション '--color = always'を使わなければなりません。他のプログラムも同じです – Bakuriu

+0

確かに意味があります - 私がこの例で試しているコマンドは '不可能な'コマンドです。脚本の外では、色の美しい虹。スクリプトではなく、かなり。 – MrDuk

答えて

3

whan cmdが指定されていませんが、標準出力が実際に端末に接続されていないと判断された場合、端末のカラー出力に必要なものはescape sequencesです。あなたがたりない可能性があることを上書きすることができるかもしれプログラムによって

ansibleでは、設定変数force_colorを1に設定すると、強制的にカラー出力が行われます。

+0

美しい!あなたがここにいる間に、どのように私の出力がすべての行に余分な '\ n'を印刷するのを止めることができるか考えていますか? (私はもう数分間あなたの答えを受け入れることはできません、ごめんなさい!) – MrDuk

+0

Nevermindは、 'strip()'を追加してもうまくいきました。 :) – MrDuk

関連する問題