Python - FTP
FTPou File Transfer Protocol est un protocole réseau bien connu utilisé pour transférer des fichiers entre les ordinateurs d'un réseau. Il est créé sur une architecture client-serveur et peut être utilisé avec l'authentification utilisateur. Il peut également être utilisé sans authentification mais ce sera moins sécurisé. Connexion FTP qui maintient un répertoire de travail actuel et d'autres indicateurs, et chaque transfert nécessite une connexion secondaire à travers laquelle les données sont transférées. La plupart des navigateurs Web courants peuvent récupérer des fichiers hébergés sur des serveurs FTP.
Les méthodes de la classe FTP
En python, nous utilisons le module ftplib qui a les méthodes requises ci-dessous pour lister les fichiers lorsque nous transférerons les fichiers.
Méthode | La description |
---|---|
pwd () | Répertoire de travail actuel. |
cwd () | Remplacez le répertoire de travail actuel par chemin. |
dir ([chemin [, ... [, cb]]) | Affiche la liste du répertoire du chemin. Cb de rappel facultatif passé à retrlines (). |
lignes de stockage (cmd, f) | Télécharge le fichier texte en utilisant une cmd FTP donnée - par exemple, le nom de fichier STOR. |
storbinary (cmd, f [, bs = 8192]) | Similaire à storlines () mais est utilisé pour les fichiers binaires. |
supprimer (chemin) | Supprime le fichier distant situé au chemin. |
mkd (répertoire) | Crée un répertoire distant. |
exception ftplib.error_temp | Exception levée lorsqu'un code d'erreur indiquant une erreur temporaire (codes de réponse compris entre 400 et 499) est reçu. |
exception ftplib.error_perm | Exception déclenchée lorsqu'un code d'erreur signifiant une erreur permanente (codes de réponse compris entre 500 et 599) est reçu. |
connect (hôte [, port [, délai d'attente]]) | Se connecte à l'hôte et au port donnés. Le numéro de port par défaut est 21, comme spécifié par le protocole FTP. |
quitter() | Ferme la connexion et se ferme. |
Vous trouverez ci-dessous des exemples de certaines des méthodes ci-dessus.
Liste des fichiers
L'exemple ci-dessous utilise une connexion anonyme au serveur ftp et répertorie le contenu du répertoire actuel. Il traite le nom des fichiers et des répertoires et les stocke sous forme de liste. Puis les imprime.
import ftplib
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
data = []
ftp.dir(data.append)
ftp.quit()
for line in data:
print "-", line
Lorsque nous exécutons le programme ci-dessus, nous obtenons la sortie suivante -
- lrwxrwxrwx 1 0 0 1 Nov 13 2012 ftp -> .
- lrwxrwxrwx 1 0 0 3 Nov 13 2012 mirror -> pub
- drwxr-xr-x 23 0 0 4096 Nov 27 2017 pub
- drwxr-sr-x 88 0 450 4096 May 04 19:30 site
- drwxr-xr-x 9 0 0 4096 Jan 23 2014 vol
Changer le répertoire
Le programme ci-dessous utilise la méthode cwd disponible dans le module ftplib pour changer de répertoire puis récupérer le contenu requis.
import ftplib
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
data = []
ftp.cwd('/pub/') change directory to /pub/
ftp.dir(data.append)
ftp.quit()
for line in data:
print "-", line
Lorsque nous exécutons le programme ci-dessus, nous obtenons la sortie suivante -
- lrwxrwxrwx 1 504 450 14 Nov 02 2007 FreeBSD -> os/BSD/FreeBSD
- lrwxrwxrwx 1 504 450 20 Nov 02 2007 ImageMagick -> graphics/ImageMagick
- lrwxrwxrwx 1 504 450 13 Nov 02 2007 NetBSD -> os/BSD/NetBSD
- lrwxrwxrwx 1 504 450 14 Nov 02 2007 OpenBSD -> os/BSD/OpenBSD
- -rw-rw-r-- 1 504 450 932 Jan 04 2015 README.nluug
- -rw-r--r-- 1 504 450 2023 May 03 2005 WhereToFindWhat.txt
- drwxr-sr-x 2 0 450 4096 Jan 26 2008 av
- drwxrwsr-x 2 0 450 4096 Aug 12 2004 comp
Récupération des fichiers
Après avoir obtenu la liste des fichiers comme indiqué ci-dessus, nous pouvons récupérer un fichier spécifique en utilisant le getfileméthode. Cette méthode déplace une copie du fichier du système distant vers le système local à partir duquel la connexion ftp a été initiée.
import ftplib
import sys
def getFile(ftp, filename):
try:
ftp.retrbinary("RETR " + filename ,open(filename, 'wb').write)
except:
print "Error"
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
ftp.cwd('/pub/') change directory to /pub/
getFile(ftp,'README.nluug')
ftp.quit()
Lorsque nous exécutons le programme ci-dessus, nous trouvons que le fichier README.nlug est présent dans le système local à partir duquel la connexion a été initiée.