私は通常、標準ライブラリのモジュールを介してこのような問題に対処しますlogging
。これは非常に優れていますが、これが必要な理由は十分にあると思います。
PyDevコンソールが完全なターミナルエミュレーションをサポートしているとしたら、私は驚きます。少なくともWindowsのHeliosでは、Unicode表示に問題はありませんでしたが、端末のエスケープは別の問題です。
使用する端末が具体的にわかっている場合は、その端末で実行sleep 3600
してから、テストドライバーでこれを実行できます。
import sys
def redirect_terminal(ttypath):
term = open(ttypath, 'w+')
sys.stdout = term
sys.stderr = term
インタラクティブインタプリタでこれを試してみると、PyDevで実行するのとは少し異なる可能性がありますが、最初のターミナルでこれを取得します(ローカルエコーとプロンプトがここに返されることに注意してください)。
>>> redirect_terminal('/dev/pts/0')
>>> dir()
>>> raise TypeError
>>>
そしてこれは/dev/pts/0
ターミナルで:
['__builtins__', '__doc__', '__name__', '__package__', 'redirect_terminal', 'sys']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError
ここではターミナルエスケープを試しませんでしたが、他と同じように出力されるバイトシーケンスであるため、リモートターミナルで印刷する必要があります。
インタラクティブインタプリタで別の端末から入力を収集することができません。試してみると、入力はまだ初期端末から読み取られています。