Eine der Stärken dieser Sprache ist die Arbeit mit Netzwerkprotokollen, unter denen wir FTP und etwas Übliches wie E-Mail erwähnen können. Hiermit können wir Programme oder Anwendungen entwickeln, mit denen wir Dateien auf entfernte Computer hochladen können. auf automatisierte Weise, wenn wir dies wünschen, ohne auf andere Tools außerhalb des Python- Ökosystems zurückgreifen zu müssen.
Das FTP-Protokoll
Das FTP- Protokoll ermöglicht es uns, Dateiübertragungen über eine Verbindung in einem Netzwerk durchzuführen. Normalerweise verwenden wir dieses Protokoll, um eine Remoteverbindung zu Servern herzustellen und Dateien auf diese Weise zu bearbeiten. In der Regel wird Port 21 verwendet. Dies entspricht jedoch vollständig den Wünschen des Verbrauchers. Wenn wir also einen anderen Port sehen, ist es nicht verwunderlich, dass es sich um einen handelt benutzerdefinierte Installation.
Um mit diesem Protokoll interagieren zu können, benötigen wir zwei Dinge: Der erste ist ein Server, der in der Luft ist und für unser Netzwerk verfügbar ist. Er kann sich im selben Netzwerk oder vielleicht im Internet befinden. Das zweite, was benötigt wird, ist ein Client, der Informationen von diesem Server senden und empfangen kann. Dieser Client muss über die Kapazität verfügen, um die vom Dienst angegebenen Ports und die eingerichtete Authentifizierung verwenden zu können.
Die ftplib-Bibliothek
Das Ausführen eines Clients in Python , der eine FTP- Verbindung von Grund auf herstellen kann, ist möglich, der Aufwand wäre jedoch beträchtlich und am Ende möglicherweise vergeblich, wenn wir nichts Besonderes benötigen.
Um Unannehmlichkeiten und unnötige Entwicklung zu vermeiden, stellt uns Python eine Bibliothek zur Verfügung, die uns bereits bei einem großen Teil der Arbeit hilft. Es handelt sich um ftplib , das vollständige und getestete und gereinigte Methoden enthält, die die Kommunikation mit dem FTP- Dateiübertragungsprotokoll erleichtern.
Wir wählen diesen Server, weil er keine Authentifizierung erfordert und es uns ermöglicht, den anonymen Modus zu verwenden. Schauen wir uns dann den Code an und machen dann die entsprechende Erklärung. Die einzige Voraussetzung, die wir brauchen, ist Python 2.7 und eine Internetverbindung:
#! / usr / bin / env Python RUTA_SERVIDOR_FTP = 'ftp.kernel.org' Importieren Sie ftplib def client_ftp_conexion (server, benutzername, mail): #Wir öffnen die Verbindung ftp = ftplib.FTP (Server, Benutzername, Mail) # Wir listen die Dateien im Verzeichnis / pub auf ftp.cwd ("/ pub") print "In% s verfügbare Dateien:"% server files = ftp.dir () Dateien drucken ftp.quit () if __name__ == '__main__': ftp_confion client (server = FTP_SERVER_ROUTE, user_name = 'anonymous', mail = '[email protected]', )
Als erstes definieren wir eine Variable in der Datei, die den FTP- Serverpfad enthält , zu dem die Verbindung hergestellt werden soll. In diesem Fall ist es ftp .kernel.org . Hier können wir Informationen vom Linux- Kernel abrufen .
Als nächstes importieren wir die oben erwähnte ftplib- Bibliothek, damit stellen wir die Möglichkeit sicher, alle notwendigen Methoden zu verwenden, um eine Verbindung zum zuvor definierten Server herzustellen. Dazu verwenden wir die FTP- Methode davon. Dort übergeben wir die Route, den Benutzernamen und eine E-Mail.
Dieser Code muss in einer Datei mit dem gewünschten Namen und der Erweiterung .py abgelegt werden, damit unser Python- Interpreter ihn ausführen kann. In dem Pfad, in dem sich unsere Datei befindet, führen wir ihn mit dem reservierten Wort python und dem Namen unserer Datei aus Es sollte uns etwas ähnliches geben, wie wir es auf dem folgenden Bildschirm sehen:
Laden Sie eine Datei über FTP hoch
Obwohl wir im vorherigen Beispiel die Dateien eines Servers auflisten können, was sehr nützlich ist, um Informationen von ihnen zu erhalten, ist das Hochladen von Dateien leistungsfähiger. Es gibt viele Verwendungszwecke. Wir können beispielsweise die Übertragung von Dateien aus einer Anwendung zur Verarbeitung aus einer anderen heraus zählen oder Sicherungen von einem Computer in einem anderen Computer innerhalb des Netzwerks erstellen. Natürlich kann es heutzutage viel elegantere Lösungen geben, aber es ist sonst nicht möglich, dies mit einer Anwendung zu erreichen, die wir selbst entwickeln.
Unabhängig davon, welchen Server wir verwenden können, müssen wir über Berechtigungen oder die Möglichkeit verfügen, einen anonymen Zugriff vorzunehmen. Im folgenden Code sehen wir jedoch besser, wie wir Dateien hochladen können.
Wir müssen einen Benutzer und ein FTP-Konto auf dem von uns erstellten lokalen Server erstellen , um dieses Beispiel verwenden zu können. Es funktioniert auch mit Remoteservern. Wir müssen nur sicherstellen, dass unsere Anmeldeinformationen aktualisiert werden. Dann können wir folgenden Code verwenden:
#! / usr / bin / env Python Importe Argument importieren Importieren Sie ftplib Importieren Sie getpass SERVER_FTP_LOCAL = 'localhost' ARCHIVE_A_SUBIR = 'example.txt' def upload_ftp (Server, Benutzername, Passwort, upload_file): print "Verbindung zum Server herstellen:% s"% server ftp = ftplib.FTP (Server) print "Sitzung starten als: user =% s"% username ftp.login (Benutzername, Passwort) ext = os.path.splitext (upload_file) [1] if ext in (".txt", ".htm", ".html"): ftp.storlines ("STOR" + upload_file, open (upload_file)) sonst: ftp.storbinary ("STOR" + file_subir, open (file_subir, "rb"), 1024) print "Datei hochgeladen:% s"% upload_file if __name__ == '__main__': parser = argparse.ArgumentParser (description = 'Beispiel für das Hochladen einer FTP-Datei') parser.add_argument ('- server', action = "store", dest = "server", default = SERVER_FTP_LOCAL) parser.add_argument ('- file', action = "store", dest = "file_subir", default = ARCHIVO_A_SUBIR) parser.add_argument ('- user', action = "store", dest = "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 password = getpass.getpass (prompt = "Geben Sie das Passwort ein:") upload_ftp (Server, Benutzername, Passwort, upload_file)
In diesem Beispiel importieren wir zusätzlich zum Import der ftplib- Bibliothek auch die Bibliotheken os , um auf Befehle des Betriebssystems zugreifen zu können. Außerdem verwenden wir argparse und getpass , um die Verwendung der vom Benutzer eingegebenen Parameter zu verarbeiten und damit unserem Programm mehr Dynamik zu verleihen.
Anschließend definieren wir ein Konstantenpaar, mit dem wir den Server einrichten, und eine Beispieldatei, die wir in den von unserem FTP- Benutzer definierten Ordner hochladen. Der nächste Schritt besteht darin, die FTP- Verbindung zu öffnen. In diesem Fall jedoch, wenn wir einen Benutzernamen und ein Kennwort verwenden, da wir theoretisch auf einen Server mit nicht anonymer Authentifizierung zugreifen, geschieht dies hauptsächlich aus Sicherheitsgründen und auch zum Anzeigen dass unser Beispiel in anderen Fällen funktioniert.
Wir evaluieren weiterhin die Erweiterung unserer Datei, damit wir sehen, ob es sich um eine Textdatei handelt, und verwenden dafür Storlines (), mit denen wir den Inhalt nicht beeinflussen, falls es sich um eine andere Erweiterung handelt, als die, die wir definiert haben, verwenden wir die storbinäre Methode ( ) in der Lage zu sein, die Datei mit ihrem binären Inhalt auf originale Weise weiterzugeben, sie also nicht zu beschädigen und ihre weitere Verwendung zuzulassen.
Schließlich verwenden wir argparse () , um die Argumente zu verwenden, die ein Benutzer zur Verwendung unseres Programms einführen kann, und machen den Vorbehalt, dass die in unserem Programm definierten globalen Werte verwendet werden, wenn dadurch keine Werte platziert werden. Wir führen unser Programm aus und wenn alles korrekt gelaufen ist, können wir die folgende Ausgabe in unserer Konsole sehen:
Wir stellen fest, dass in diesem Fall der Benutzerparameter der einzige ist, den wir verwenden, da wir auf unserem Server einen Benutzer namens test-python haben. Dann geben wir das diesem Benutzer zugewiesene Passwort ein und der Upload der Datei wird effektiv durchgeführt.
Nachdem wir dieses Tutorial abgeschlossen haben, haben wir gelernt, wie man eine FTP- Verbindung mit einem in Python erstellten Programm herstellt. Wichtig ist hier, dass wir mit Methoden aus der Python- Standardbibliothek Funktionen realisieren, die uns sonst viel Zeit gekostet hätten. abgesehen von der großen Menge an Code, der generiert werden soll. Wir empfehlen weitere Recherchen in der offiziellen Dokumentation der ftplib- Bibliothek . Auf diese Weise werden wir unsere Fähigkeiten in der Python- Welt erheblich verbessern und die Türen öffnen, um als Entwickler in dieser technologischen Welt mit so viel Wettbewerb effektiver zu sein.