Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ftplib et callback

0 views
Skip to first unread message

Laurent

unread,
May 5, 2008, 8:45:28 AM5/5/08
to
Bonjour !

je débute en python, excusez si ma question a été déjà posée, mais je
n'ai pas trouvé de réponses probantes sur google..

en bref : j'ai vu que la fonction de download possède une fonction de
callback :

/retrbinary(command, callback[, maxblocksize[, rest]])/

par contre celle d'upload, non.

/storbinary(command, file[, blocksize])/

Cette fonction de callback pourrait servir, par exemple, à mettre à jour
une barre d'avancement du tranfert..

Mais dans ce cas, comment peut-on faire pour un upload ?

merci :)

Amaury Forgeot d'Arc

unread,
May 6, 2008, 4:46:56 PM5/6/08
to
Laurent a écrit :

Tel quel, l'option n'existe pas.
Mais on peut l'obtenir rapidement:

Dans mon programme, j'ai ajouté:

# <<<< début <<<<<<<<<<<<<<<
import ftplib

class MyFTP(ftplib.FTP):
def storbinary(self, cmd, fp, blocksize=8192, callback=None):
'''Store a file in binary mode.'''
self.voidcmd('TYPE I')
conn = self.transfercmd(cmd)
while 1:
buf = fp.read(blocksize)
if not buf: break
conn.sendall(buf)
if callback:
callback(buf)
conn.close()
return self.voidresp()
# >>>> fin >>>>>>>>>>>>>>>>

Le code de la fonction, je l'ai simplement recopié à partir de
lib/ftplib.py, en le modifiant un peu : j'ai ajouté le paramètre 'callback'.

Il suffit d'utiliser MyFTP à la place du ftplib.FTP d'origine. La
fonction s'utilise comme ceci:
/storbinary(command, file[, blocksize[, callback]])/
et la callback est appelée à chaque bloc, en passant le bloc en paramètre.

Une grande partie de Python est écrit en Python, ça rend plus facile les
modifications.

Bonne connexion,

--
Amaury

Laurent

unread,
May 7, 2008, 4:55:25 AM5/7/08
to
Amaury Forgeot d'Arc a écrit :

> Le code de la fonction, je l'ai simplement recopié à partir de
> lib/ftplib.py, en le modifiant un peu : j'ai ajouté le paramètre
> 'callback'.

> Une grande partie de Python est écrit en Python, ça rend plus facile les
> modifications.

C'est de la surcharge, c'est ça ? (je ne suis pas très versé dans la
prog. objet, mais je m'y intéresse ;) )

En tout cas, merci beaucoup... :)

0 new messages