PYTHON FTPLIB FILE-TRANSFERSION ERROR_PERM
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?
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