ejemplo descargar archivos python ftp ftplib

python - descargar - selección de archivo ftplib



ftp python ejemplo (1)

Dice el manual

Para descargar un archivo, use ftp.retrlines (''RETR'' + nombre de archivo)

Esto es lo que hago:

ftp.retrbinary(''RETR media/backups/andrey.txt'', open("file_to_get.txt", ''a+'').write)

¿Podría alguien recomendar cómo poner la variable de nombre de archivo, previamente añadida vía raw_input, después del comando "RETR"? Usó% s pero esto no funciona, se procesa como una parte de un nombre de archivo.

ftp.retrbinary(''RETR %s'', open("file_to_get.txt", ''a+'').write) %raw_input("print file name")

produce esto:

c:/>python ftp_client.py Enter host95.31.8.52 drwxrwxrwx 61 99 102 32768 Sep 14 01:39 backpl drwxrwxrwx 19 99 102 4096 Sep 7 13:47 media drwxrwxrwx 2 99 102 4096 Jul 2 11:15 naswebsite Traceback (most recent call last): File "ftp_client.py", line 12, in <module> ftp.retrbinary(''RETR %s'', open("file_to_get.txt", ''a+'').write) %raw_input("p rint file name") File "C:/Python27/lib/ftplib.py", line 399, in retrbinary conn = self.transfercmd(cmd, rest) File "C:/Python27/lib/ftplib.py", line 361, in transfercmd return self.ntransfercmd(cmd, rest)[0] File "C:/Python27/lib/ftplib.py", line 330, in ntransfercmd resp = self.sendcmd(cmd) File "C:/Python27/lib/ftplib.py", line 244, in sendcmd return self.getresp() File "C:/Python27/lib/ftplib.py", line 219, in getresp raise error_perm, resp ftplib.error_perm: 550 Can''t open %s: No such file or directory c:/>


Esto podría funcionar

filename = ''andrey.txt'' path = "media/backups/" ftp.cwd(path) ftp.retrbinary("RETR " + filename ,open(filename, ''a+'').write)