Python - FTP
FTPoder File Transfer Protocol ist ein bekanntes Netzwerkprotokoll, das zum Übertragen von Dateien zwischen Computern in einem Netzwerk verwendet wird. Es wird auf der Client-Server-Architektur erstellt und kann zusammen mit der Benutzerauthentifizierung verwendet werden. Es kann auch ohne Authentifizierung verwendet werden, dies ist jedoch weniger sicher. Für eine FTP-Verbindung, die ein aktuelles Arbeitsverzeichnis und andere Flags verwaltet, und für jede Übertragung ist eine sekundäre Verbindung erforderlich, über die die Daten übertragen werden. Die meisten gängigen Webbrowser können auf FTP-Servern gehostete Dateien abrufen.
Die Methoden in der FTP-Klasse
In Python verwenden wir das Modul ftplib Dies hat die unten erforderlichen Methoden, um die Dateien aufzulisten, da wir die Dateien übertragen werden.
Methode | Beschreibung |
---|---|
pwd () | Aktuelles Arbeitsverzeichnis. |
cwd () | Ändern Sie das aktuelle Arbeitsverzeichnis in den Pfad. |
dir ([Pfad [, ... [, cb]]) | Zeigt die Verzeichnisliste des Pfads an. Optionale Rückruf-cb an retrlines () übergeben. |
Storlines (cmd, f) | Lädt eine Textdatei mit dem angegebenen FTP-Cmd hoch, z. B. den Namen der STOR-Datei. |
storbinär (cmd, f [, bs = 8192]) | Ähnlich wie storlines (), wird jedoch für Binärdateien verwendet. |
löschen (Pfad) | Löscht die am Pfad befindliche entfernte Datei. |
mkd (Verzeichnis) | Erstellt ein Remote-Verzeichnis. |
Ausnahme ftplib.error_temp | Ausnahme ausgelöst, wenn ein Fehlercode empfangen wird, der einen vorübergehenden Fehler anzeigt (Antwortcodes im Bereich von 400 bis 499). |
Ausnahme ftplib.error_perm | Ausnahme ausgelöst, wenn ein Fehlercode empfangen wird, der einen dauerhaften Fehler anzeigt (Antwortcodes im Bereich von 500 bis 599). |
verbinden (Host [, Port [, Timeout]]) | Stellt eine Verbindung zum angegebenen Host und Port her. Die Standardportnummer ist 21, wie im FTP-Protokoll angegeben. |
Verlassen() | Schließt die Verbindung und beendet sie. |
Nachfolgend finden Sie Beispiele für einige der oben genannten Methoden.
Auflisten der Dateien
Im folgenden Beispiel wird die anonyme Anmeldung am FTP-Server verwendet und der Inhalt des aktuellen Verzeichnisses aufgelistet. Es behandelt den Namen der Dateien und Verzeichnisse und speichert sie als Liste. Dann druckt sie aus.
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
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
- 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
Verzeichnis ändern
Das folgende Programm verwendet die im ftplib-Modul verfügbare cwd-Methode, um das Verzeichnis zu ändern und dann den erforderlichen Inhalt abzurufen.
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
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
- 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
Abrufen der Dateien
Nachdem wir die Liste der Dateien wie oben gezeigt erhalten haben, können wir eine bestimmte Datei mithilfe von abrufen getfileMethode. Diese Methode verschiebt eine Kopie der Datei vom Remote-System auf das lokale System, von dem aus die FTP-Verbindung initiiert wurde.
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()
Wenn wir das obige Programm ausführen, finden wir, dass die Datei README.nlug auf dem lokalen System vorhanden ist, von dem aus die Verbindung initiiert wurde.