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

subir un archivo al servidor local ftp con python 3.6

estoy probando a subir un archivo a mi server local pero no lo consigo de ninguna manera

from ftplib import FTP
ftp = FTP('127.0.0.1')
ftp.login(user='acer')
ftp.cwd('beta')
ftp.storbinary('STOR prueba.txt', 'prueba.txt')

output
traceback (most recent call last)
file '<stdin>' line1 in <module>
bud = fp.read(blocksize)
AttributeError 'str' object has no attribute 'read'

1 Respuesta

1voto

carlossevi Puntos59840

Tienes el mismo problema que en tu anterior pregunta, pero en sentido contrario. A la función ftplib.storbinary() (ver doc) le tienes que pasar dos parámetros:

  • Comando FTP, que básicamente será STOR nombre_fichero
  • Fichero origen a subir, del tipo file object.

Estás fallando en el segundo atributo porque estás pasando una cadena de texto. Prueba a cambiarlo por:

ftp.storbinary('STOR prueba.txt', open('prueba.txt', 'rb'))

steven comentado Mar 28

ok muchas gracias, creo estos comandos son suficientes a la hora de operar con la libreria ftplib, sin embargo todavia quedan algunos comandos desconocidos que desconosco su utilizo que son los siguientes

  1. set_debug_level segun la documentacion este comando es para definir el nivel de debug pero que hace en si este comando, podra servir en algun caso+
  2. connect me parece que es lo mismo que login, si es que tu sabes podrias explicarme la diferencia que hay con el comando login
    3.sendcmd este comando creo que envia comandos cmd al servidor, pero en que caso me podria ser util, que argumentos le debo pasar, podrias poner un ejemplo
  3. voidcmd este comando es un poco misterioso
    5.set_pasv
    6.transfercmd
    7.ntransfercmd
    8.nlst
    espero que me lo puedas explicar mejor que la documentacion

carlossevi comentado Mar 28

FTP.set_debuglevel fija el nivel de detalle de los mensajes de salida, como los clásicos '230 Login successful.', '226 Transfer complete.'... Nivel 0 no muestra mensajes, nivel 1 muestra generalmente mensajes de una línea, nivel 2 es el máximo detalle.

FTP.connect establece la conexión con el host, pero no es necesario ejecutarlo si al construir el objeto ya le has indicado el host al que conectarse directamente.

He empezado a redactar el comentario con la explicación a todos los comandos pero aquí me he cansado ;)

La mejor explicación siempre en la documentación oficial: https://docs.python.org/3/library/ftplib.html

Si tienes problemas con el idioma, prueba con Google Translate: https://translate.google.com/translate?hl=en&sl=auto&tl=es&u=https%3A%2F%2Fdocs.python.org%2F3%2Flibrary%2Fftplib.html&sandbox=1

steven comentado Mar 28

ya lei tambien la documentacio traducida pero como te mencionaba no lo puedo entender con claridad, podemos seguir con los demas terminos, faltan solo cuatro
ftp.sendcmd('dir')
ftp.transfercmd('dir')
ftp.voidcmd('dir')
ftp.ntrasnfercmd('dir')
si todos permiten ejecutar comandos cmd en que varia la salida de cada comando

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