2016-12-12 3 views
0

ist dies eine ziemlich direkte Frage, aber ich bin neu, also habe ich eine harte Zeit, dies richtig zu formatieren. Ich habe einen Code, der einen Artikel herunterlädt und mir eine dynamische print() des Prozentsatzes vervollständigt.Python (3.5) - Formatierungsnummer mit zusätzlichem Text Nach

while True: 
    buf1 = resp.read(blocksize) 
    if not buf1: 
     break 
    buf.write(buf1) 
    size += len(buf1) 
    if length: 
     print('Downloading: {:.1f}\r%'.format(size/length*100), end='')# print('{:.2f}'.format(size/length), 'done') 
print() 

Lassen Sie uns an dieser Druckzeile

print('Downloading: {:.1f}\r%'.format(size/length*100), end='')

Gerade jetzt einen genaueren Blick ist es %Downloading 100.0

Druck Aber ich möchte es Downloading 100.0% (oder vielleicht auch nur ohne das Dezimalsystem drucken könnte besser aussehen)

Danke für jede Hilfe zur Verfügung gestellt.

+0

Was soll das "\ r" tun? '\ r' fügt einen Carriage Return in den Code ein, der den Cursor im Grunde an den Anfang der Zeile zurückversetzt ... (und ich bin auch überrascht von der gemeldeten Ausgabe ... Es scheint so, als würde die'% 'überschreiben das 'D'). – mgilson

+0

ja Stick '%' mit '{: .1f}'. –

+0

Damit sich der Druck nicht dupliziert, ist er dynamisch. Also '100%' anstelle von '98%', '99%' '100%'. – Kenny

Antwort

3

Es sieht für mich wie man so etwas wollen:

print('Downloading: {:.1f}%'.format(size/length*100), end='') 

oder möglicherweise:

print('\rDownloading: {:.1f}%'.format(size/length*100), end='') 

Grundsätzlich sind Sie einen Wagenrücklauf in der Mitte des Inhalts kleben, die Sie wollen zusammen halten. Ihr Wagenrücklauf sollte entweder vor oder nach dem Inhalt sein, den Sie zusammenhalten möchten.

+0

Excellent, bewegte die '\ r' nach vorne und reparierte es für mich. Es liest jetzt "100.0% herunterladen" von 0 bis 100 in derselben Anweisung (im Gegensatz zu mehreren Druckzeilen). Ich werde die Antwort in 5 Minuten akzeptieren. Danke noch einmal! – Kenny