同じ行で以前の印刷出力をオーバーライドする
プログラミングでは、上に表示されている既存の値を更新する必要がある状況に遭遇することがよくあります。改行を追加せずに標準出力 (stdout) に出力します。次の Python コードを考えてみましょう:
for x in range(10): print(x)
このコードは、1 から 10 までの数値を別々の行に出力します。以前の値を上書きして、同じ行の新しい値に置き換えるには、次のテクニックを利用できます。
簡易バージョン:
キャリッジ リターン ( 'r') 次の行に進まずに行の先頭に戻る文字。
Python 3:
for x in range(10): print(x, end='\r') print()
Python 2.7 上位互換性:
from __future__ import print_function for x in range(10): print(x, end='\r') print()
Python 2.7:
for x in range(10): print '{}\r'.format(x), print
パイソン2.0-2.6:
for x in range(10): print '{0}\r'.format(x), print
これらの例では、print ステートメントの後の末尾のカンマによって改行が抑制されます。最後の print ステートメントは次の行に進み、プロンプトが出力を上書きしないようにします。
行のクリーニング:
新しい行が確実に上書きされることが保証できない場合テキストの長さが既存の行より短くない場合は、「行末までクリア」エスケープ シーケンス 'x1b[1K' ('x1b' = ESC):
for x in range(75): print('*' * (75 - x), x, end='\x1b[1K\r') print()
Long Line Wrap:
前述のメソッドは、行の長さを超えて記述しないことを前提としています。キャリッジ リターンは現在の行の先頭にのみ戻ります。したがって、出力が行の長さを超える場合は、最後の行のみを消去します。
この問題を軽減し、カーソルが次の行に折り返されないようにするには、行の折り返しを無効にします。
print('\x1b[7l', end='') # Disable line wrapping print('\x1b[7h', end='') # Re-enable line wrapping
端末が壊れた状態のままになるのを避けるために、コード ブロックの最後で行の折り返しを手動で再度有効にする必要があることに注意してください。
以上がPython で同じ行にある以前の印刷出力を上書きするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。