Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / [Debutant] les mget * en ftp ?

[Debutant] les mget * en ftp ?

Remonter à Forum général Python
  • [Debutant] les mget * en ftp ?

    Envoyé par ph_biohazard le 6 Novembre 2006 à 18:02
    Bonjour a tous,

    J'ai un petit probleme pour recuperer tous les fichiers .deb d'un serveur ftp en local sur mon disque dur dans mon code python.

    Voici mon code :

    import ftplib
    session = ftplib.FTP('ftp.monsrv.com','anonymous','titi')
    session.cwd('/products/release/english/')
    session.retrlines('LIST *.deb')
    session.retrbinary('MGET *.deb' , open('*.*', 'wb').write)

    Toutes suggestions seraient la bienvenue

    Amities
    Marc
    • Re: [Debutant] les mget * en ftp ?

      Envoyé par jpcw2002 le 6 Novembre 2006 à 19:24
      Il n' y a pas de commandes (à ma connaissance) das ftplib pour télécharger ou supprimer tout un répertoire, il te faut faire une boucle

      session.cwd('/products/release/english/')
      for file in session.nlst():
      try:
      session.delete(file)
      print 'suppression de %s' %file
      except:
      pass
      • Re: [Debutant] les mget * en ftp ?

        Envoyé par ph_biohazard le 7 Novembre 2006 à 23:34
        Bonjour JP,

        Merci pour ton code, mais je n'arrive toujours pas a recuperer de ce repertoire mes fichiers .deb

        J'ai repris ton code, et modifier par le retrbinary mais cela ne fonctionne pas

        for file in session.nlst():
        try:
        session.retrbinary(file)
        print 'Copie de %s' %file
        except:
        pass

        J'ai essaye egalement cela avec un non fonctionnement :

        for file in session.nlst('.deb'):
        try:
        session.retrbinary(file)
        print 'Copie de %s' %file
        except:
        pass


        Est-ce que tu crois qu'il faut que j'utilise les re ? si oui, vers quelle regex je pourrais m'orienter ?

        Merci
    • Re: [Debutant] les mget * en ftp ?

      Envoyé par jpcw2002 le 8 Novembre 2006 à 15:38
      ta commande retrbinary n'est pas bonne !

      import ftplib

      cnx ={'url':'ftpperso.free.fr','login':'toto','password':'secret'}
      remote_dir='products/release/english/'
      filter='.deb'

      def downloadFiles(**kw):
      session = ftplib.FTP(kw['url'],kw['login'],kw['password'])
      session.cwd(remote_dir)
      for file in (file for file in session.nlst() if file[-len(filter):]==filter):
      session.retrbinary('RETR '+file, open(file, 'wb').write)
      print 'Download de %s ok' %file
      session.quit()

      downloadFiles(**cnx)
      • Re: [Debutant] les mget * en ftp ?

        Envoyé par ph_biohazard le 9 Novembre 2006 à 11:29
        Milles mercissss JP :)

        Ca fonctionne maintenant, en fait je n'utilisais pas le len pour le filtre

        Merci de m'avoir eclaire :)
        Marc
Rendu par Ploneboard