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 ?
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, blocksize92, 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
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 :
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 ?
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, blocksize92, 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.
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 ?
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, blocksize92, 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
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... :)
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 ;) )