entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

bajar ficheros de mi servidor local ftp con python 3.6

hola muchachos no puedo entender bien como se usa el comando strbinary que sirve supuestamente para bajar y subir archivos, hay varios ejemplos por la red pero ninguno es suficientemente explicado, espero que me puedan resolver la duda

from ftplib import FTP
ftp = FTP("127.0.0.1")
ftp.login(user='acer', passwd='')
ftp.cwd('beta')

en mi carpeta beta tengo un archivo de texto me gustaria poder descargarlo en mi escritorio, previamente le di permiso total a mi usuario acer

por curiosidad me preguntaba cual era el siginificado de RTR Y STOR, he visto que casi todos los metodos llevan ese prefijo en mayuscula

1 Respuesta

1voto

carlossevi Puntos58820

Empiezo por el final: los comandos RETR y STOR. FTP es un protocolo de transferencia de archivos montado sobre TCP/IP. El protocolo tiene una serie de comandos, que son diferentes órdenes que pueden transmitirse al servidor a través del protocolo: Lista de comandos FTP en la Wikipedia.

La biblioteca de ftplib implementa el protocolo sin abstraerse demasiado, obligando a especificar los diferentes comandos. Es el caso de la función ftplib.retrbinary(), ver documentación oficial. Un ejemplo de uso, tomado de la propia documentación:

from ftplib import FTP
ftp = FTP('ftp.debian.org')     # connect to host, default port
ftp.login()                     # user anonymous, passwd anonymous@
ftp.cwd('debian')               # change into "debian" directory
ftp.retrbinary('RETR README', open('README', 'wb').write)
ftp.quit()

steven comentado Mar 27

ya habia leido el articulo de wikipedia y la documentacion oficial de los comandos sin embargo todavia no entiendo muy bien los parametros, te dejo lo que se me ocurrio hacer

from ftplib import FTP
ftp = FTP("127.0.0.1")
ftp.login(user='acer', passwd='')
ftp.cwd('beta')
ftp.retrbinary('RETR log.txt', open().write) 

no puedo entender porque se pone el metodo open y write si no debo abrir ni escribir nada en mi archivo log.txt, lo unico que debo hacer es descargarlo
ftp.retrbinary('RETR log.txt', open().write)

carlossevi comentado Mar 27

No debes hacer nada en el archivo remoto, pero sí en el archivo local que todavía no existe. Tienes que crearlo y escribirlo, que es lo que tu llamas descargar.

En tu ejemplo:

ftp.retrbinary('RETR log.txt', open('log.txt', 'wb').write)

steven comentado Mar 27

obtengo la siguiente respuesta 226 transfer ok, pero no me indica en que carpeta se descargo, como podria pasarle una ruta especifica

carlossevi comentado Mar 27

En el comando del ejemplo se descarga en la ruta 'log.txt', que es una ruta relativa. El fichero debería estar en la misma del script en Python.

steven comentado Mar 27

ahora lo he cambiado de nombre lleva prueba.txt con que comando podria subirlo

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta