IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

ftplib + callback


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 4
    Par défaut ftplib + callback
    Bonjour,

    Je veux utiliser un callback lors de l'upload d'un fichier sur un site ftp. Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from ftplib import FTP
    def UploadTracker(): print "HELLO"
     
    myftp = FTP()
    myftp .connect(host='mysite.com')
    myftp .login('me','mypw') 
    myftp .storbinary('STOR mydata.txt', open('mydata.txt', 'rb'), callback=UploadTracker())
    myftp .quit()
    Le téléchargement de mydata.txt fonctionne bien, mais le résultat affiche seulement un "HELLO" au début du téléchargement ...
    La taille de mydata.txt est de 1800ko.
    J'attendais donc beaucoup de messages HELLO (à chaque fois qu'un bloc de 8 192 octets est téléchargé) mais cela ne fonctionne pas.
    Ai-je fait une erreur?

    J'ai essayé différentes manières d'écrire ce code (changement de la taille du blocksize, ajout de variables globales pour messages de debug, ) mais aucune différence, un seul appel à UploadTracker est effectué. Quelle est mon erreur?

    Merci beaucoup pour votre aide .
    Roberto

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    slut,

    Enlève les parenthèses ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myftp .storbinary('STOR mydata.txt', open('mydata.txt', 'rb'), callback=UploadTracker())
    c'est comme si tu avais écrit callback=None

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    La fonction sur laquelle pointe le callback (ici UploadTracker) doit avoir comme argument le bloc transféré (donc: UploadTracker(bloc)). C'est ce qui permet de mettre à jour une barre de progression dans un programme graphique.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 4
    Par défaut
    Ca marche !!
    Un grand merci pour votre aide !!

    Je n'avais pas compris qu'il fallait définir un argument dans la fonction callback . Le nom de l'argument ne semble pas avoir d'importance .
    Que represente cette variable ? Elle semble contenir une partie de mon fichier ..

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par roberto_breizh Voir le message
    ...Le nom de l'argument ne semble pas avoir d'importance .
    Que represente cette variable ? Elle semble contenir une partie de mon fichier...
    A chaque appel, cette fonction "callback" reçoit le bloc qui a été transféré. Ce bloc a par défaut 8192 octets, mais on peut en changer la taille à l'appel de storbinary:

    FTP.storbinary(cmd, fp, blocksize=8192, callback=None, rest=None)
    Et le dernier bloc a, en général, une taille inférieure puisque la taille du fichier téléchargé n'est pas forcément divisible par 8192...

    Et il y a des tas de choses intéressantes dans la doc... ;-) => https://docs.python.org/3/library/ft...FTP.storbinary

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 4
    Par défaut
    Merci pour ces infos !

    J'ai lu la doc (mais je n'ai pas tout compris !) et sans exemple de code , difficile de connaitre la syntaxe exacte .
    Heureusement que vous êtes là !

    Roberto

Discussions similaires

  1. Fonction callback
    Par saibe dans le forum Linux
    Réponses: 4
    Dernier message: 19/01/2012, 10h41
  2. Réponses: 3
    Dernier message: 28/10/2004, 08h39
  3. Callback
    Par el_diablos dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2004, 08h48
  4. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42
  5. [MFC] Un callback dans des MFC ...
    Par elsargento dans le forum MFC
    Réponses: 3
    Dernier message: 18/02/2004, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo