Pythonでstdoutから行を削除するには?
(これは標準出力Python コンソール ウィンドウから行を削除するための一般的な回答であり、paramiko、ssh などに関する特定の質問とは関係ありません)
参照:こことここ
print
コマンドまたはprint()
関数を使用する代わりに、sys.stdout.write("...")
と組み合わせて使用しsys.stdout.flush()
ます。書かれた行を消去するには、「前の行に戻り」、 を使用してすべての文字をスペースで上書きしますsys.stdout.write('\r'+' '*n)
。ここn
で、 は行の文字数です。
良い例はそれをすべて言います:
import sys, time
print ('And now for something completely different ...')
time.sleep(0.5)
msg = 'I am going to erase this line from the console window.'
sys.stdout.write(msg); sys.stdout.flush()
time.sleep(1)
sys.stdout.write('\r' + ' '*len(msg))
sys.stdout.flush()
time.sleep(0.5)
print('\rdid I succeed?')
time.sleep(1)
edit
の代わりにsys.stdout.write(msg); sys.stdout.flush()
、使用することもできます
print(msg, end='')
3.0 より前の Python バージョンfrom __future__ import print_function
では、これを機能させるためにスクリプト/モジュールの先頭に置きます。
このソリューションは標準出力の Python コンソール ウィンドウで機能することに注意してください。たとえば、右クリックして [open with -> python] を選択してスクリプトを実行します。SciTe、Idle、Eclipse、またはコンソール ウィンドウが組み込まれたその他のエディターでは機能しません。ここでその解決策を待っています。