2011-07-24 4 views
1

標準的なPython Consoleウィンドウでは、最後の行を例えばsys.stdout.write('\r'+' '*len(line))のようにI explained hereとして削除することができます。Pythonでstdoutから行を削除する方法 - SciTe、Idle、Eclipseまたはコンソールで他のエディタで

SciTe、Idle、Eclipse(PyDev)のようなエディタの場合、stdoutはファイルタイプのオブジェクトで、おそらくコンテンツをコンソールウィンドウにフラッシュしてバッファを空にしてしまい、窓の上にそのようなコンソールの最後の行を消去するなど、どのようなトリックを適用できますか?スクリプトが標準のPythonコンソールウィンドウに書き込むエディタの外で実行されている場合、同じ結果を生成する、それを行うための万能な方法はありますか?

編集:チェックタイプ(os.sys.stdout)を示しています

  • SciTEの:<type 'file'>
  • アイドル:<class 'idlelib.rpc.RPCProxy'>
  • エクリプス:<type 'file'>
  • Pythonコンソールウィンドウ:<type 'file'>

標準的なpythonコンソールのstdoutでは、stdout.write('\r')というのはSciTeとEclipseのコンソールとは異なるため、stdoutのtypeは実装を定義していません。

編集:ちょうどjavaの人々がsimilar problemを持っ見て、報告されたバグのようです...

+0

どうすればいいですか:http://stackoverflow.com/questions/3732928/how-to-remove-lines-from-stdout-in-python#answer-6804439 – flameNugget

答えて

1

私はそれが不可能であるという結論に来ています、私が間違っている場合は、私を修正してください。

Pythonコンソールウィンドウ(ターミナル)は、次の行が渡されるまで、書かれた行を 'フラッシュ'しません。メモリに '\ n' 。 GUIベースの他のコンソールウィンドウ(IDE)は明らかに異なって実装されています。したがって、これらのコンソールの前の行を消去するために '\ r'を補間するという機能要求である可能性があります。したがって、すべてのコンソールは、標準オプションのコンソールと少なくとも共通の動作を共有します。

解決策は、ユーザとしてsys.stdoutを新しいコンソールウィンドウ(questioned before)に変更することでしたが、不満足な答えがありました...誰かがこれに賭けて意見を出しましたか?

またはcursesモジュールのようなものを使用しますが、Windowsの場合(Windowsの場合は 'curses.py'はありますか? Console.py

関連する問題