ホームページ > バックエンド開発 > Python チュートリアル > Python で同じ行にある以前の印刷出力を上書きするにはどうすればよいですか?

Python で同じ行にある以前の印刷出力を上書きするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-08 18:20:11
オリジナル
366 人が閲覧しました

How Can I Overwrite Previous Print Outputs on the Same Line in Python?

同じ行で以前の印刷出力をオーバーライドする

プログラミングでは、上に表示されている既存の値を更新する必要がある状況に遭遇することがよくあります。改行を追加せずに標準出力 (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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート