En python 3, nous pouvons facilement imprimer sur la même ligne en utilisant le script suivant. Je l'utilise pour comprendre la progression de ma boucle (combien de temps il restera). Cependant, en jupyter, il ne fonctionne pas (il imprime sur différentes lignes)
import time
for f in range(10):
print(f, end='\r', flush=True)
time.sleep(10)
Cela ne fonctionne pas pour désactiver la jolie impression% pprint, et j'ai essayé la même chose avec sys.stdout.write () mais là aussi j'ai ce problème.
J'ai trouvé la solution un peu plus tard (notez que cela ne fonctionne pas dans pycharm jupyter, mais uniquement dans l'implémentation du navigateur). Pour moi, print
fonctionne très bien, mais icidisplay
est conseillé, mais il imprime des apostrophes autour des chaînes.
from time import sleep
from IPython.display import clear_output, display
for f in range(10):
clear_output(wait=True)
print(f) # use display(f) if you encounter performance issues
sleep(10)
Edit: Je voulais juste ajouter que TQDM est souvent aussi un bon outil pour cet objectif. Il affiche des barres de progression et vous permet d'écrire la sortie en dessous ou de différer la description de chaque barre. Voir aussi ce post .
import sys
from tqdm import tqdm
from time import sleep
values = range(3)
with tqdm(total=len(values), file=sys.stdout) as pbar:
for i in values:
pbar.set_description('processed: %d' % (1 + i))
pbar.update(1)
sleep(1)
Et le carnet avec de jolies couleurs
from tqdm import tqdm, tqdm_notebook
from time import sleep
for i in tqdm_notebook(range(2), desc='1st loop'):
sleep(0.01)
tqdm.write(f"Done task {i}")
La partie "\ r" écrase la ligne, si vous la laissez que vous ajoutez à la ligne. Votre version print(f, end='', flush=False)
pourrait fonctionner mais j'ai lu sous Python 3 vous devez utiliser sys.stdout.write () et le mieux est si vous ajoutez aussi la commande 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)
Le stdout.flush est requis sur certains systèmes ou vous n'obtiendrez aucune sortie