私は次のコードを持っています:
num = int(raw_input("input number: "))
print "\b" * 20
コンソール出力は次のようになります
input number: 10
input number: 10
ユーザーがを押した後、テキストを削除したいのですがENTER
。バックスペースキー\b
はそれを行うことができません。
これはほとんどのUNIXおよびWindowsターミナルで機能します...非常に単純なANSIエスケープを使用します。
num = int(raw_input("input number: "))
print "\033[A \033[A" # ansi escape arrow up then overwrite the line
Windowsでは、次のhttp://www.windowsnetworking.com/kbase/windowstips/windows2000/usertips/miscellaneous/commandinterpreteransisupport.htmlを使用してANSIサポートを有効にする必要がある場合があることに注意して ください。
「\033[A」文字列は、端末によってカーソルを1行上に移動すると解釈されます。
カーソルを動かす「ワードバック」や「ラインバック」などの制御シーケンスがあります。したがって、カーソルを削除するテキストの先頭に戻し、スペースでオーバーライドしてみることができます。しかし、これはすぐに複雑になります。ありがたいことに、Pythonには「高度な端末処理」のための標準のcursesモジュールがあります。
これに関する唯一の問題は、現時点ではクロスプラットフォームではないことです。そのモジュールはWindowsに移植されたことがありません。したがって、Windowsをサポートする必要がある場合は、コンソールモジュールを確認してください。
import sys
print "Welcome to a humble little screen control demo program"
print ""
# Clear the screen
#screen_code = "\033[2J";
#sys.stdout.write( screen_code )
# Go up to the previous line and then
# clear to the end of line
screen_code = "\033[1A[\033[2K"
sys.stdout.write( screen_code )
a = raw_input( "What a: " )
a = a.strip()
sys.stdout.write( screen_code )
b = raw_input( "What b: " )
b = b.strip()
print "a=[" , a , "]"
print "b=[" , b , "]"
あなたはosモジュールを使うことができます
import os
os.system('clear')
「cls」と「clear」は、ターミナル(つまり、DOSプロンプトまたはターミナルウィンドウ)をクリアするコマンドです。
IDLEの場合:できる最善の方法は、画面をたくさんの行を下にスクロールすることです。例:
print "\n" * 100