1. ホーム
  2. python

[解決済み] 同じ行に前の出力を上書きして出力しますか?

2022-02-17 18:32:35

質問内容

FTPダウンローダーを作成しています。コードの一部は次のようなものです。

ftp.retrbinary("RETR " + file_name, process)

コールバックを処理するために関数processを呼び出しています。

def process(data):
    print os.path.getsize(file_name)/1024, 'KB / ', size, 'KB downloaded!'
    file.write(data)

で、出力はこのような感じです。

1784  KB / KB 1829 downloaded!
1788  KB / KB 1829 downloaded!
etc...   

しかし、私はこの行を印刷し、次回に再印刷/更新して、一度だけ表示し、そのダウンロードの進捗状況を見るようにしたいのです。

どうすればいいのでしょうか?

どのように解決するのですか?

Python 3.x用のコードです。

print(os.path.getsize(file_name)/1024+'KB / '+size+' KB downloaded!', end='\r')

end= キーワードは、デフォルトではこの作業を行うものです。 print() は改行で終わります ( \n )文字に置き換えることができますが、これは別の文字列で置き換えることができます。この場合、キャリッジリターンで行を終えると、代わりにカーソルが現在の行の先頭に戻ります。従って、このような場合は sys モジュールは、このような単純な使い方をします。 print() 実際には いくつかのキーワード引数 を使用することで、コードを大幅に簡略化することができます。

Python 2.6+で同じコードを使うには、次の行をファイルの先頭に記述してください。

from __future__ import print_function