2017-03-17 17 views
5

python 3では、次のスクリプトを使用して同じ行に簡単に印刷できます。私はこれを使ってループの進行状況を把握します(どれくらいの時間が残っているか)。しかし、jupyterにそれはdoesntの仕事、それはかなり変わり%のPPRINTをオフに印刷する作業をdoesntのjupyterノートブックの同じ行に印刷

import time 
for f in range(10): 
    print(f, end='\r', flush=True) 
    time.sleep(10) 

(それは別の行に印刷)、と私は私が持っているにもありsys.stdout.write(と同じことをしようとした)が、この問題。

+0

いいえ、目標は常に同じ行に印刷することである - ループ内の進捗状況の指標として;) – Roelant

+0

私は、Python 3.6(両方のターミナルIPythonセッションでとJupyterノートブックにあなたのソリューションを試してみました。 0と3.5.2)、どちらの場合も同じ行に印刷され、前にあるものが置き換えられます。これはJupyter/IPythonの一般的な問題ではないようです。 – Pit

答えて

5

を取得することはありませんブラウザ実装)。

from IPython.display import clear_output 

for f in range(10): 
    clear_output(wait=True) 
    print(f) 
    time.sleep(10) 
2

"\ r"という部分は、その行を上書きして、行に追加すると上書きされます。あなたのバージョンprint(f, end='', flush=False)は動作するかもしれませんが、Python 3の下ではsys.stdout.write()を使う必要があります。また、flushコマンドも追加するのが最善です。

import sys 
import time 

for f in range(10): 
    #delete "\r" to append instead of overwrite 
    sys.stdout.write("\r" + str(f)) 
    sys.stdout.flush() 
    time.sleep(10) 

stdout.flushはいくつかのシステムで必要とされたり、任意の出力ビット後でこれを解決するには(それがpycharmのjupyterでは動作しませんのでご注意、だけで発見

関連する問題