Travailler avec FTP à partir de Python

Table des matières
Python C'est un langage qui nous permet d'intégrer le travail avec les différentes fonctionnalités des systèmes d'exploitation de manière simple et intuitive, grâce au grand nombre de bibliothèques et de documentations qui existent sur le net gratuitement et bien expliquées.
L'un des points forts de ce langage est le travail avec les protocoles réseaux, parmi lesquels on peut citer les FTP et quelque chose de plus courant comme le courrier électronique, avec cela, nous pouvons développer des programmes ou des applications qui nous permettent de télécharger des fichiers sur des ordinateurs distants de manière automatisée si nous le souhaitons, le tout sans avoir besoin de recourir à d'autres outils en dehors de l'écosystème de Python.
Le protocole FTP nous permet d'effectuer des transferts de fichiers via une connexion dans un réseau. Normalement, c'est le protocole que nous utilisons pour nous connecter à distance aux serveurs et ainsi manipuler des fichiers, généralement le port 21Cependant, cela dépend entièrement du goût du consommateur, donc si nous voyons un autre port, il n'est pas surprenant qu'il s'agisse d'une installation personnalisée.
Afin d'interagir avec ce protocole, nous avons besoin de deux choses, la première est un serveur en direct et disponible sur notre réseau, il peut être sur le même réseau ou peut-être sur Internet. La deuxième chose qui est nécessaire est un client qui peut envoyer et recevoir des informations dudit serveur, ce client doit avoir la capacité d'utiliser les ports spécifiés par le service et l'authentification établie.
Faire un client dans Python que je peux faire le lien FTP Partir de zéro c'est possible, cependant l'effort que cela nous demanderait serait considérable et au final cela pourrait être vain si nous n'avons pas besoin de quelque chose de spécial.
Pour éviter les désagréments et les développements inutiles Python nous fournit une bibliothèque qui nous aide déjà dans une grande partie du travail. On parle de ftplib, il contient des méthodes complètes et déjà testées et affinées qui facilitent la communication à l'aide du protocole de transfert de fichiers FTP.
Comment utiliser la bibliothèque ?Pour utiliser cette bibliothèque, nous devons simplement l'inclure dans notre programme en utilisant l'instruction importer puis nous commençons notre développement normal. Dans l'exemple suivant, nous allons créer un petit programme client qui peut se connecter à un serveur FTP, dans ce cas nous allons utiliser le service kernel.org qui est un site Web Linux et avec cela, nous allons lister les fichiers disponibles.
Nous choisissons ce serveur car il ne nécessite pas d'authentification et il nous permet d'utiliser le mode anonyme. Voyons ensuite le code et ensuite nous ferons l'explication correspondante, la seule exigence dont nous avons besoin est d'avoir Python 2.7 et connexion Internet :
 #! / usr / bin / env python PATH_FTP_SERVER = 'ftp.kernel.org' import ftplib def client_ftp_connection (server, username, mail) : # open the connection ftp = ftplib.FTP (server, username, mail) # on liste les fichiers dans le répertoire /pub ftp.cwd ("/pub") print "Fichiers disponibles dans% s:"% server files = ftp.dir () print files ftp.quit() if __name__ == '__main__': client_ftp_conexion ( server = FTP_SERVER_PATH, nom d'utilisateur = 'anonyme', mail='[email protected]',) 

La première chose que nous faisons est de définir une variable dans le fichier qui contiendra le chemin du serveur FTP auquel on veut faire le lien, dans ce cas il s'agit ftp.kernel.org, c'est de là que nous pouvons obtenir des informations sur le noyau Linux.
Prochain acte, nous faisons le importer de la librairie ftplib susmentionné, nous assurons ainsi la possibilité d'utiliser toutes les méthodes nécessaires pour se connecter au serveur défini ci-dessus, pour cela nous utilisons la méthode FTP du même, nous y passerons la route, le nom d'utilisateur et un e-mail.
Vérification de la connexionPour tester que la connexion fonctionne, nous utilisons la commande cwd pour naviguer vers un répertoire puis avec dir () Nous pouvons répertorier les fichiers de ce dossier sur le serveur, une fois que nous avons terminé notre procédure, nous appelons la méthode quitter () pour terminer la session et fermer la connexion.
Ce code doit aller dans un fichier du nom que l'on veut avec extension .py afin que notre interprète Python peut l'exécuter, pour cela dans le chemin où se trouve notre fichier nous l'exécutons avec le mot réservé python et le nom de notre fichier, ce qui devrait nous donner quelque chose de similaire à ce que nous voyons dans l'écran suivant :

AGRANDIR

Bien que dans l'exemple précédent nous puissions lister les fichiers d'un serveur, ce qui est assez utile pour obtenir des informations d'eux, quelque chose de plus puissant est de pouvoir télécharger des fichiers. Les utilités de celui-ci sont nombreuses, on peut compter, par exemple, le transfert de fichiers résultant d'une application pour le traitement d'une autre, ou peut-être faire des sauvegardes d'un ordinateur dans un autre qui se trouve au sein du réseau. Bien sûr, il peut exister aujourd'hui des solutions beaucoup plus élégantes, mais il ne suffit pas de pouvoir y parvenir avec une application que nous développons nous-mêmes.
ExigenceL'exigence supplémentaire dont nous avons besoin pour cet exercice est d'avoir un serveur FTP local dans notre équipement de test, pour cela si nous avons un système Linux nous pouvons utiliser wu-ftp, mais si nous sommes sur la plate-forme les fenêtres nous pouvons utiliser Filezilla Server qui est gratuit.
Quel que soit le serveur que nous pouvons utiliser, nous devons avoir des autorisations ou la possibilité d'un accès anonyme, de toute façon dans le code suivant, nous verrons mieux comment nous pouvons télécharger des fichiers.
Nous devons créer un utilisateur et un compte FTP Dans le serveur local que nous créons pour pouvoir utiliser cet exemple, cela fonctionne également avec des serveurs distants, nous devons simplement nous assurer que nos informations d'identification sont à jour. Ensuite, nous pouvons utiliser le code suivant :
 #! / usr / bin / env python import os import argparse import ftplib import getpass SERVER_FTP_LOCAL = 'localhost' FILE_TO_UPLOAD = 'example.txt' def upload_ftp (serveur, nom d'utilisateur, mot de passe, upload_file): print "Connexion au serveur:% s " % serveur ftp = ftplib.FTP (serveur) print" Connexion en tant que : utilisateur =% s "% nom d'utilisateur ftp.login (nom d'utilisateur, mot de passe) ext = os.path.splitext (upload_file) [1] si ext in ( ". txt", ".htm", ".html") : ftp.storlines ("STOR" + upload_file, open (upload_file)) else : ftp.storbinary ("STOR" + upload_file, open (upload_file, "rb" ), 1024) print "Fichier téléchargé:% s"% upload_file if __name__ == '__main__': parser = argparse.ArgumentParser (description = 'Exemple de téléchargement de fichiers FTP') parser.add_argument ('- server', action = "store" , dest = "server", default = SERVER_FTP_LOCAL) parser.add_argument ('- file', action = "store", dest = "file_upload", default = FILE_TO_UPLOAD) parser.add_argument ('- user' , action = "store" , dest = "n user_name ", default = getpass.getuser ()) application_parameters = parser.parse_args () server, upload_file, user_name = application_parameters.server, application_parameters. upload_file, application_parameters.user_name mot de passe : mot de passe : getpass.getpass le (invite =") mot de passe : getpass.getpass le (invite = ") upload_ftp (serveur, nom d'utilisateur, mot de passe, upload_file) 

Dans cet exemple, en plus d'importer la bibliothèque ftplib, nous importons également des bibliothèques toi pour pouvoir accéder aux commandes du système d'exploitation, nous utilisons en plus argparse Oui passer afin de traiter l'utilisation des paramètres saisis par l'utilisateur et ainsi dynamiser notre programme.
Ensuite, nous définissons quelques constantes avec lesquelles nous allons établir le serveur et un exemple de fichier que nous téléchargerons dans le dossier défini par notre utilisateur FTP. L'étape suivante consiste à ouvrir la connexion FTPCependant, dans ce cas, nous utiliserons un nom d'utilisateur et un mot de passe, car en théorie nous accédons à un serveur avec une authentification non anonyme, c'est principalement pour des raisons de sécurité et aussi pour montrer que notre exemple fonctionne dans d'autres cas.
Nous continuons à évaluer l'extension de notre fichier, avec cela nous verrons s'il s'agit d'un fichier texte, pour cela nous utilisons storlines (), avec laquelle nous n'affecterons pas le contenu de celui-ci, en cas d'une autre extension différente de celles définies, nous utiliserons la méthode storbinaire () pour pouvoir transmettre le fichier dans sa forme originale avec son contenu binaire, ne le corrompant ainsi pas et lui permettant de continuer à être utilisé.
Enfin on utilise argparse () pour pouvoir prendre les arguments qu'un utilisateur peut introduire pour utiliser notre programme, à l'exception que s'il ne place pas de valeurs, les valeurs globales définies au sein de notre programme seront prises. Nous exécutons notre programme et si tout s'est bien passé, nous pourrons voir la sortie suivante dans notre console :

AGRANDIR

Nous notons que dans ce cas le paramètre utilisateur est le seul que nous utilisons, puisque sur notre serveur nous avons un utilisateur appelé test-python, puis on introduit le mot de passe attribué audit utilisateur et le téléchargement du fichier s'effectue efficacement.
Avec cela, nous terminons ce tutoriel, nous avons appris à établir une connexion FTP à partir d'un programme réalisé en Python, l'important ici est de noter comment avec les méthodes qui proviennent de la bibliothèque standard de Python nous avons réussi à réaliser des fonctionnalités qui autrement nous auraient pris beaucoup de temps, mis à part la grande quantité de code qu'il faudrait générer. Nous vous recommandons de continuer à enquêter sur la documentation officielle de la librairie ftplib, de cette façon, nous augmenterons considérablement nos compétences dans le monde Python, ouvrant ainsi les portes pour être plus efficaces en tant que développeurs dans ce monde technologique hautement concurrentiel.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave