mardi 22 novembre 2011

Découvrons FTPLib

Alors avant tout qu'est ce que "FTPLib" ?

Un module FTP pour le Python... un langage sur lequel je fais mes dents (ou plutôt mes doigts) ces derniers temps.
Et ce module très sympa simplifie grandement les taches qu'on pourrait avoir à faire sur un FTP.

Comment fonctionne FTPLib ?

Alors avant tout, je ne vais pas vous faire un cours Python ou de cours sur le protocole FTP. Je vais juste vous faire découvrir ce module par des exemples...

  • Le plus important
import ftplib
  • Connexion à votre FTP
host = ftpperso.free.fr
login = testest
pass = motdepass

connect = ftplib.FTP(host, login, pass)

Vous voilà donc connecté à votre FTP

  • Ouvrir un répertoire
connect.cwd("/temp")

Nous nous situons maintenant dans le dossier "temp" de notre FTP ...

Si vous desirez ouvrir un repertoire depuis le repertoire temp cela ne se fera pas en deux méthode, mais en une seul comme ceci :

connect.cwd("/temp/autres")

(cwd = change working directory)

  • Créer un dossier
connect.mkd("/misc")

Nous venons de créer le dossier misc à la racine.

Nous venons de voir déjà comment ouvrir un dossier et comment creer un dossier, il me vient à l'idée de faire un petit script qui pourrait être utile déjà :
try:
    connect.cwd("/temp")
except:
    connect.mkd("/temp")

On essaye de changer de dossier, si cela n'a pas fonctionné on le créait.

(mkd = make directory)
  • Supprimer un répertoire
connect.rmd("/temp")

Nous venons de supprimer le dossier temp et son contenu.
(rmd : remove directory)

  •  Envoyer un fichier sur le FTP
A savoir qu'il faut ouvrir le fichier avant de l'envoyer (le py s'en charge).

lefichier = open("C:\test.jpg", "rb") // rb signifie read binary
connect.storbinary("STOR test.jpg", lefichier) // envoi du fichier
lefichier.close()

  • Supprimer un fichier
connect.delete("test.jpg")
 Ici, on vient de supprimer test.jpg du dossier dans lequel nous nous situons.

  • Renommer un fichier ou dossier
connect.rename("test.jpg", "test2.jpg")

Nous venons de renommer le fichier test.jpg par test2.jpg

  • Abandonner le transfert d'un fichier

connect.abort()
Quelque soit le transfert en cours, en utilisant cette fonction nous avons annulé le transfert.

  • Lister un repertoire
list = connect.dir()
Cela nous retourne le listing du répertoire dans lequel nous nous situons cela peut permettre des vérifications avant d'agir.


  • Envoyer une commande au FTP
Admettons que vous ayez besoin d'envoyer une commande au FTP qui ne serait pas gérer  par le module ou bien que vous nécessitiez d'en envoyer une je ne sais pour quel raison, une fonction est faite pour :
connect.sendcmd("CWD /test")
Sur cette exemple nous avons envoyé au FTP la commande : "CWD /test" qui permet de changer de dossier si vous avez bien suivi.
Si vous voulez utilisez seulement sendcmd vous le pouvez, mais il faudra faire un effort pour lire un petit peu comment fonctionne les FTP.

(sencmd = send command)

En espérant que tout ceci vous aura servi.
nowz