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 :

Transfert FTP avec Python [Python 3.X]


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut Transfert FTP avec Python
    Bonjour,

    j'ai créé un fichier .py pour faire un transfert de fichier avec Python

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    host = "bidon" 
    user = "bidon" 
    password = "bidon" 
    connect = ftp.ftplib(host,user,password) 
     
    fichier = "D:\bidon.xml"
    file = open(fichier, 'rb') 
    connect.storbinary('STOR ' +fichier, file) 
    file.close()
    et cela ne fonctionne pas (j'ai mis "bidon" uniquement à la place des informations de connexion et sur le nom du fichier, pour le reste, je mets tel quel)

    j'ai regardé les tutos, mais comme, je ne suis pas un expert, je vous sollicite pour avoir de l'aide.

    Aussi, la connexion ftp est positionné à la racine, comme, je fais pour sélectionner un répertoire avant de transférer le fichier, merci de votre aide

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ce qui ne va pas, c'est que dans le storbinary, "fichier" est le fichier avec, si nécessaire, son chemin ftp (et non son chemin sur disque comme "D:\...").

    Sans chemin ftp, le fichier "bidon.xml" sera stocké sur le serveur dans le répertoire par défaut (connect.pwd())

    Cela peut donner un truc comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fichier = "D:\bidon.xml"
    with open(fichier, "rb") as fs:
        connect.storbinary("STOR " + os.path.basename(fichier), fs)
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Merci,

    je viens de tester en mettant ce bout de code, cela ne fonctionne pas.

    Faut il que je remplace os.path.basename par quelque chose ou c'est une fonction python ?

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Le "ça ne fonctionne pas" ne donne pas assez d'infos pour que je puisse t'aider. En général, il y a un message d'erreur qui dit pourquoi ça ne marche pas.

    As-tu importé os? Sinon, il faut ajouter:

    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    En fait, je n'ai pas de message d'erreur, une fenetre de type cmd s'ouvre, un script apparait rapidement (pas le temps de lire), et je ne vois aucun fichier sur le serveur ftp.

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Pour avoir le message d'erreur, peut-être faut-il lancer ton programme directement dans la console cmd.exe, ou dans un outil de développement python (ex: idle).

    Sinon, ta ligne "connect = ftp.ftplib(host,user,password) " est bizarre. Il serait plus normal de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import ftplib
    ...
    connect = ftplib.FTP(host, user, password)
    ...
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    j'ai l'erreur errno 11004 getaddrinfo failed ??

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Il s'agit apparemment d'un problème d'adresse du serveur.

    Essaie de mettre au point ton code avec une adresse sûre avant d'utiliser celle que tu utilises actuellement.

    Par exemple, l'adresse des pilotes Epson:
    host = "download.epson-europe.com"
    user = "anonymous"
    password = "anonymous@"

    Autre suggestion: si ton adresse est "localhost", utilise plutôt "127.0.0.1"
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    merci, je teste,

    maintenant, j'ai l'erreur OS error : Errno 22 : 'D:\x03.FTP\\test\fichier.xml'

    mon chemin d'origine dans le code est : 'D:\3.FTP\test\fichier.xml'

  10. #10
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Le problème, c'est que dans une chaine de caractères Python, le "\" est interprété. D'où le "\3" qui se transforme en '\x03'.

    Pour éviter cela, met un r devant le 1er guillemet comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     r"D:\3.FTP\test\fichier.xml"
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Merci, c'est parfait,

    Par contre, le fichier est déposé à la racine du FTP, comment fait on pour le déposer précisément dans un répertoire bien défini ?

    Encore merci.

  12. #12
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par meumeu73.1 Voir le message
    le fichier est déposé à la racine du FTP, comment fait on pour le déposer précisément dans un répertoire bien défini ?
    Il suffit de mettre le chemin du fichier devant le nom du fichier dans le storbinary. Mais il s'agit bien du chemin dans le serveur ftp et non du disque local

    Une autre façon est de déplacer le répertoire courant:

    - Pour obtenir le chemin du répertoire courant, c'est "connect.pwd()".

    - Pour mettre le répertoire "chemin" comme répertoire courant, on fait "connect.cwd('chemin')".
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Merci beaucoup de votre aide

    Cdt,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transfert FTP avec un PDA en Visual studio 2008
    Par Didier L dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/11/2012, 13h50
  2. problème de transfert ftp avec root
    Par batou22003 dans le forum AIX
    Réponses: 5
    Dernier message: 22/07/2011, 15h51
  3. Conseil pour Transfert FTP avec Delphi Studio 2006 Express
    Par dominos dans le forum Composants VCL
    Réponses: 1
    Dernier message: 18/06/2010, 15h23
  4. Transfert FTP avec Eclipse
    Par kmchen dans le forum Eclipse Java
    Réponses: 23
    Dernier message: 23/05/2010, 00h47
  5. transfert ftp avec le composant
    Par sillycoder dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/05/2005, 09h35

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