Pregunta

Estoy tratando de automatizar una prueba en Python 2.7 (en Eclipse en Linux Ubuntu 12.04) y necesito probar el servidor FTP lo siguiente: Tengo que crear un archivo en un host, transferirlo por FTP a otra PC y luego transferirlo de nuevo a mi host bajo otro nombre.Luego tengo dos archivos que tengo que comparar.Comencé así:

    #create the two files
    firstFilename = "first_testfile.txt"
    secondFilename = "second_testfile.txt"
    os.system("echo \"test\" > {0}".format(firstFilename))
    os.system("touch {0}".format(secondFilename))

    #setup FTP connection transfer file to other computer
    ftp = self.setupFTP()
    ftp.set_pasv(True)
    f = open(firstFilename)
    ftp.storbinary("STOR {0} ".format(firstFilename), f)
    f.close
    ftp.quit()
    #setup FTP connection transfer file back to host (other filename)
    ftp = self.setupFTP()
    ftp.set_pasv(True)
    f = open(secondFilename, "wb")
    ftp.retrbinary("RETR {0} ".format(secondFilename), f.write)
    ftp.quit()
    #comparison-part will be implemented later
    firstOutput = os.system("cat {0}".format(firstFilename))
    secondOutput = os.system("cat {0}".format(secondFilename))
    #compare somehow

Ejecutar este código me da el siguiente error:

ftp.retrbinary("RETR {0} ".format(secondFilename), f.write)
error_perm: 550 second_testfile.txt : No such file or directory

¿Alguien sabe lo que hice mal?

¿Fue útil?

Solución

Editar y resuelto: He encontrado mi problema, debería ser

ftp.retrbinary("RETR {0} ".format(firstFilename), f.write)

en lugar de

ftp.retrbinary("RETR {0} ".format(secondFilename), f.write)

Desde que pensé después de RETR, debo decir cómo se debe llamar al archivo (en realidad, el FileHandler es para ello) en lugar de cómo se llama el archivo en el FTP.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top