7

から生成されたフォアグラウンドとバックグラウンドのエスケープコードを使用して、素敵で大きなカラフルなテーブルを出力する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 カラー メソッドを使用するように変換します。

4

0 に答える 0