から生成されたフォアグラウンドとバックグラウンドのエスケープコードを使用して、素敵で大きなカラフルなテーブルを出力するbashスクリプトがありますtput
. 私の curses アプリケーションは、この bash スクリプトを呼び出して、出力を画面に表示する必要があります。
私がそれをしようとすると、curses が爆発し、スタック トレースが次の場所で終了します。
File "./dostuff.py", line 38, in print_art
screen.addstr(y, x_start, line)
TypeError: must be str, not bytes
「行」は次のようなものです。
'\x1b[44m\x1b[30mcard major minor revision runs updated\x1b(B\x1b[m\x1b(B\x1b[m\n'
curses にこれらのカラーコードを解釈させる方法はありますか? 呪いを表示させるために、カラーコードを使用して文字列に実行できる処理はありますか? または、基本的にbashスクリプトから色を削除してから、Pythonで色付けを再実装する必要がありますか?
編集:
bash 出力を取得するコマンドは、次のようなものです。
print_art(subprocess.Popen(["./automount", "backup", "list"], stdout=subprocess.PIPE).communicate()[0])
バイト文字列を呼び出すことdecode()
で、curses を取得して文字列を出力できますが、リテラル エスケープ シーケンスを使用します。他の人から連絡がない限り、これらのリテラル エスケープ シーケンスを手動で解析し、curses カラー メソッドを使用するように変換します。