1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| self.nbFtpBlock = 0
self.taille_bloc = 8192
self.blockToRead = 0
# si la source existe, on lit un nombre précis de bloc, puis on l'ecrit
# si non, on écrit un fichier vide
if self.destSize > 0:
self.blockToRead = int(self.destSize / self.taille_bloc)
if self.blockToRead > 4:
sizeToRead = (self.blockToRead-4) * self.taille_bloc
content = open(self.dest, 'rb').read(sizeToRead)
open(self.dest, 'wb').write(content)
else:
open(self.dest, 'wb').write()
from ftplib import FTP
ftp = FTP(host)
ftp.login(userPass[0], userPass[1])
# on recupere la taille du fichier en ligne
def ftpSize(ret):
self.taille_fichier = int( ret.split(" ")[len(ret.split(" ")) - 5] )
ftp.retrlines('LIST '+ srcFile, ftpSize)
def OnFtpHook(self, content):
if not content:
return
if os.path.isfile(self.dest):
self.currentSize = os.path.getsize(self.dest)
else:
self.currentSize = 0
if self.currentSize >= self.taille_fichier:
return
self.nbFtpBlock += 1
print "-> ftp Hook block ", self.nbFtpBlock , self.currentSize, self.currentSize - self.currentSizeBefore, self.taille_fichier
if self.destSize > 0 and self.nbFtpBlock <= (self.blockToRead - 4) :
pass
else:
print "-> ftp writing", self.nbFtpBlock , self.currentSize, self.currentSize - self.currentSizeBefore, self.taille_fichier
open(self.dest, 'ab').write(content)
ftp.retrbinary('RETR '+f, self.OnFtpHook ) |
Partager