ftp-dateien

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
TcError
User
Beiträge: 11
Registriert: Freitag 7. Mai 2021, 09:55

Hallo Liebe Community,
ich erstelle im moment ein Python Script und ich würde gerne auf einen FTP-Server zugreifen und diesen wie einen normalen Ordner benutzen.
Ich kann mich schon mal verbinden aber komme dann nicht weiter.

Code: Alles auswählen

import ftplib
ftp = ftplib.FTP("192.168.178.1")
ftp.login("MeinBenutzer",  "Mein Passwort")
Jetzt komm ich aber nicht weiter ich würde gerne im Ordner fritz.nas die datei hp.txt lesen
So mach ich das wenn die Datei auf meiner Festplatte ist:

Code: Alles auswählen

datei = open("fritz.nas/datei.txt")
print(datei.read())
aber

Code: Alles auswählen

datei = open("192.168.178.1/fritz.nas/hp.txt")
funktioniert leider nicht.
Kann mir da einer helfen wäre Euch sehr dankbar. :D :D
Sirius3
User
Beiträge: 17759
Registriert: Sonntag 21. Oktober 2012, 17:20

Natürlich funktioniert das nicht, Du mußt schon die Methoden von ftplib.FTP benutzen.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1021
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Code: Alles auswählen

import io
from pathlib import Path


def retr_bytes(ftp_connection, file) -> bytes:
    data = io.BytesIO()
    ftp_connection.retrbinary(f"RETR {file}", data.write)
    return data.getvalue()


def download(ftp_connection, source, target_file=None, target_path="."):
    target_file = Path(source).name if target_file is None else target_file
    target = Path(target_path, target_file)
    with target.open("wb") as fd:
        ftp_connection.retrbinary(f"RETR {source}", fd.write)
    print(f"{fd.name} ist heruntergeladen worden.")
Das ist alles ohne Fehlerbehandlung und eine bereits bestehende FTP-Verbindung ist erforderlich.
Ich finde ftplib ist etwas zu sehr low-level. Wenn man das in schön will, am besten mit Klassen arbeiten.

PS: Eine eingebaute Download-Funktion habe ich nicht gefunden.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
nezzcarth
User
Beiträge: 1638
Registriert: Samstag 16. April 2011, 12:47

TcError hat geschrieben: Sonntag 3. Oktober 2021, 18:00 ich erstelle im moment ein Python Script und ich würde gerne auf einen FTP-Server zugreifen und diesen wie einen normalen Ordner benutzen.
Wenn das auf einem so hohen Abstraktionslevel stattfinden soll, kann man sich https://pypi.org/project/fs/ mal ansehen.
Antworten