PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Python: FTP und Carriage Returns



Keeper
04-11-2009, 15:02
Hallo liebe Leute!

Ich schreibe ein Python-Skript, dass eine Datei von einem FTP-Server lädt, so dass man sie bearbeiten kann, und anschließend wieder hochlädt. Zweck ist, dass mir das Programm auf mehreren Rechnern zur Verfügung steht, also sowohl auf Linux als auch auf Windows.

Und da stellt sich bei Text-Dateien gleich die Carriage Return-Frage.

Ich übertrage die Dateien per ASCII-Modus. AFAIK wandeln FTP-Schnittstellen Textdateien automatisch von Unix in Windows bzw. andersherum um.

Upload:

f = open(localfile, "r")
print ftp.storlines("STOR %s" % remotefile, f)

Download:

print ftp.retrlines('RETR %s' % remotefile, open(localfile, 'w').write)

Das sollte eigentlich funktionieren, oder?

Lade ich die Datei hoch, und mit FileZilla wieder runter, ist auch alles gut!
Lade ich sie mit meiner Routine wieder runter und lese sie dann, sind die Zeilenumbrüche weg :confused:
Aber "write" sollte unter Windows mit \n\r schreiben, und retrlines sollte das auch empfangen.

Irgendwelche Vorschläge? :D Oder habe ich eventuell eine Option übersehen?

Viele Grüße, Tim

SOLVED:

FTP.retrlines(command[, callback])
Retrieve a file or directory listing in ASCII transfer mode. command should be an appropriate RETR command (see retrbinary()) or a command such as LIST, NLST or MLSD (usually just the string 'LIST'). The callback function is called for each line, with the trailing CRLF stripped. The default callback prints the line to sys.stdout.

Ich habe also bloß Line Feed und Carriage Return angehangen, tada, da gings.