ftplib auf dem Mac?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Maenny
User
Beiträge: 17
Registriert: Samstag 23. Mai 2009, 13:52
Kontaktdaten:

Hallo zusammen,

Ich habe mein Problem mal hier gepostet, weil es indirekt mit einem CGI Script File zusammenhängt.

Ich habe ein kleines Programm geschrieben, eine Art spezialisiertes FTP-Tool, mit dem ich Dateien auf einen Server hochladen und verwalten kann. Das Script funktioniert unter Windows einwandfrei. Ich wollte jetzt für einen Kollegen das Script unter Mac ausführen lassen und bin dabei auf ein Problem gestoßen:

Ich erstelle eine Instanz namens ftp mit ftplib.FTP('Domain'). Danach ftp.connect(), alles funktioniert wunderbar.
Aus einem mir unerfindlichen Grund wird bei dem Befehl ftp.login(user='username', passwd='passwort'), den ich danach ausführe, ein ftplib.error_perm('Login incorrect.') ausgelöst. user und passwort sind 100% richtig. Das Merkwürdige: wenn ich das alles in der Shell per Hand ausführe funktioniert es. Hat jemand Erfahrung mit der ftplib auf dem Mac und weiß vielleicht sogar, was da zu machen ist?

Für jede Hilfe dankbar,

Manuel
www.framefloor.de
www.manuleum.com
Maenny
User
Beiträge: 17
Registriert: Samstag 23. Mai 2009, 13:52
Kontaktdaten:

Hm wie so oft habe ich jetzt kurz danach das Problem gefunden, ich poste die Lösung mal, falls jemand dasselbe Problem hat:

User und Passwort werden bei mir durch ein Textfeld abgefragt. Die Daten in diesem Textfeld werden am Anfang von einer cfg-Datei eingelesen. Dabei wird anscheinend ein nicht sichtbares '/r' - Newline zeichen angehängt, welches noch in dem String enthalten ist. Auf Windows scheint das nicht weiter schlimm zu sein, es funktioniert trotzdem. Bei dem mac jedoch musste ich mit einem string.rstrip() nochmal alle nichtsichtbaren Zeichen löschen. Dann funktionierts.

Greetz

Manuel
www.framefloor.de
www.manuleum.com
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Öffnest du die Datei vielleicht verkehrt? Eigentlich sollte Python bei Dateien im Textmodus (also ohne "b") automatisch das Encoding erkennen und entweder \r, \n oder \r\n als Zeilentrenner entfernen. Oder kann es sein, dass deine Datei da unterschiedliche Zeilenendmarkierungszeichenketten enthält?

Das \r ist übrigens NICHT das Newline-Zeichen, sondern der Wagenrücklauf (Carriage Return). \n ist der Zeilenvorschub (Newline).

Stefan
Antworten