Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Palo 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
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)
-
Za příkaz print dej čárku.
-
Já bych zkusil
print(percento, "%", end=' ')
-
Ked uz, tak
print(percento, "%", end='\r')
samozrejme toto funguje v python3, pokial ide o python2, tak print percento, '%\r',
-
Já bych zkusil
print(percento, "%", end=' ')
Vypisuje to výsledky veľa seba.
Teraz mi píše
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 zaloha.tar má veľkosť 531624448 bajtov
stahovanie zaloha.tar
0.001540937410011663 % - priebežne menená hodnota
Je to Python3 a Windows.
-
Ked uz, tak
print(percento, "%", end='\r')
samozrejme toto funguje v python3, pokial ide o python2, tak 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 (http://stackoverflow.com/questions/517127/how-do-i-write-output-in-same-place-on-the-console)
-
Vďaka za rady.
Zistil som, že python shell '\r' a "\b" vykresluje ako štvorce, v príkazovom riadku je to ok.
-
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...