@mmueller-87: Kommentare sollen dem Leser einen Mehrwert über den Code geben. Faustregel: Kommentare beschreiben nicht *was* der Code macht, denn das steht da bereits als Code, sondern warum er das macht. Sofern das nicht offensichtlich ist. Offensichtlich ist in aller Regel auch was in der Dokumentation von Python und den verwendeten Bibliotheken steht.
Bei `file` im Namen würde man ein Datei-Objekt erwarten und keine Zeichenkette mit einem Dateinamen.
Die Kodierung kann man einem `FTP`-Objekt schon beim erstellen mitgeben. Das UTF-8 aber schon die Voreinstellung ist, braucht man das hier nicht.
`FTP`-Objekte sind Kontextmanager, die sollte man mit ``with`` verwenden.
Zwischenstand (ungetestet):
Code: Alles auswählen
def ftp_upload(local_filename, media_type):
with ftplib.FTP(FTP_HOSTNAME, FTP_USERNAME, FTP_PASSWORD) as ftp_server:
with open(local_filename, "rb") as file:
#
# audios: /cache/receiver_b/audio/
# thumbs: /templates/default/m3images/
# images: /templates/default/m3images/
#
media_folder = (
"/cache/receiver_b/audio/"
if media_type == "audio"
else "/templates/default/m3images/"
)
ftp_server.storbinary(f"STOR {media_folder}{local_filename}", file)
Die Fehlerbehandlung würde ich ausserhalb dieser Funktion machen. Oder was könnte/sollte die sinnvolles tun wenn die Verbindung zum Server nicht funktioniert oder die Datei nicht übertragen werden kann?
Bandbreite könnte man übrigens über die optionale Rückruffunktion begrenzen, die man bei `storbinary()` angeben kann.