Python: přepis čísla v terminálu

Palo

Python: přepis čísla v terminálu
« kdy: 29. 11. 2014, 09:37:56 »
Zdravím.

Urobil som si jednoduchý program na sťahovanie záloh z webu. Beží z príkazovej riadky a cez print mi zobrazuje percento stiahnutých dát. Lenže každý výpočet percent zobrazuje na novom riadku. Ako dosiahnuť aby sa menilo v shellu len číslo?

Som absolútny začiatočník s programovaním. Stačí mi napovedať, len sám neviem ani čo mám hľadať.

Vďaka

Kód: [Vybrat]
import ftplib, sys
import datetime
import os

def handleDownload(block):
    file.write(block)
    Y=os.stat(filename)
    Z=Y.st_size
    percento=Z/(X/100)
    print(percento, "%")      # vypíše vždy nový riadok
   
ftp = ftplib.FTP("ftp.niekde.sk")
ftp.login("niekto", "heslo")
ftp.cwd('web/backwpup')
filename = "zaloha.tar"
ftp.sendcmd("TYPE i")
X=ftp.size(filename)
print(filename, "má veľkosť", X, "bajtov")

file = open(filename, 'wb')
print("stahovanie", filename)
ftp.retrbinary('RETR ' + filename, handleDownload)
file.close()
ftp.delete(filename)
print("zmazanie", filename)

dt = datetime.date.today().isoformat()
newname =  filename + dt + ".tar"
os.rename('zaloha.tar', newname)
print('premenované ' + newname)

« Poslední změna: 29. 11. 2014, 11:20:40 od Petr Krčmář »


Kit

Re:zobrazenie zmeny premenej v shellu - python základy
« Odpověď #1 kdy: 29. 11. 2014, 10:16:03 »
Za příkaz print dej čárku.

Re:zobrazenie zmeny premenej v shellu - python základy
« Odpověď #2 kdy: 29. 11. 2014, 10:44:12 »
Já bych zkusil
Kód: [Vybrat]
print(percento, "%", end=' ')

black3r

Re:zobrazenie zmeny premenej v shellu - python základy
« Odpověď #3 kdy: 29. 11. 2014, 11:22:10 »
Ked uz, tak
Kód: [Vybrat]
print(percento, "%", end='\r')
samozrejme toto funguje v python3, pokial ide o python2, tak
Kód: [Vybrat]
print percento, '%\r',

Palo

Re:zobrazenie zmeny premenej v shellu - python základy
« Odpověď #4 kdy: 29. 11. 2014, 12:02:39 »
Já bych zkusil
Kód: [Vybrat]
print(percento, "%", end=' ')

Vypisuje to výsledky veľa seba.

Teraz mi píše
Kód: [Vybrat]
záloha.tar má veľkosť 531624448 bajtov
stahovanie zaloha.tar
0.0 %
0.001540937410011663 %
0.003081874820023326 %
0.004412889604354688 %
0.005191634828652575 %
0.005970380052950462 %
0.0067491252772483475 %
0.0067491252772483475 %
0.008047033984411492 %
0.008825779208709377 %
0.010366716618721041 %

A ja by som chcel
Kód: [Vybrat]
zaloha.tar má veľkosť 531624448 bajtov
stahovanie zaloha.tar
0.001540937410011663 %   -  priebežne menená hodnota

Je to Python3 a Windows.


Re:zobrazenie zmeny premenej v shellu - python základy
« Odpověď #5 kdy: 29. 11. 2014, 13:02:38 »
Ked uz, tak
Kód: [Vybrat]
print(percento, "%", end='\r')
samozrejme toto funguje v python3, pokial ide o python2, tak
Kód: [Vybrat]
print percento, '%\r',

JJ, mi šlo o to, že podle toho print se závorkama (teda už jako funkce je to python 3), proto ta čárka za tím je mimo.
Jinak máš pravdu, ještě bych se zkusil odpíchnout třeba od:
http://stackoverflow.com/questions/517127/how-do-i-write-output-in-same-place-on-the-console

Palo

Re:Python: přepis čísla v terminálu
« Odpověď #6 kdy: 29. 11. 2014, 13:52:24 »
Vďaka za rady.

Zistil som, že python shell '\r' a "\b" vykresluje ako štvorce, v príkazovom riadku je to ok.

black3r

Re:Python: přepis čísla v terminálu
« Odpověď #7 kdy: 30. 11. 2014, 13:13:54 »
no znak \r je "Carriage Return" --> navrat na zaciatok riadka.. na windows-och neviem ako sa to sprava (kedze na windows-och je znak \r sucastou windows-ackeho konca riadka \r\n) ale na linux-e ked vypises \r tak ta to vrati na zaciatok riadka a teda mozes cely riadok prepisat znovu jak sa ti zachce :)

\b je znak "Backspace Character" --> navrat kurzora na predchadzajucu poziciu, s tym sa da prepisovat posledny napisany znak...