Pergunta

Estou tentando automatizar um teste em python 2.7 (no eclipse no linux ubuntu 12.04) e preciso testar o servidor FTP da seguinte forma:Tenho que criar um arquivo em um host, transferi-lo por FTP para outro pc e depois transferi-lo de volta para meu host com outro nome.Então eu tenho dois arquivos que preciso comparar.Comecei assim:

    #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

A execução deste código me dá o seguinte erro:

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

Alguém sabe o que eu fiz de errado?

Foi útil?

Solução

EDITAR E RESOLVIDO:Eu encontrei meu problema, deveria ser

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

em vez de

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

já que pensei que depois do RETR eu teria que dizer como o arquivo deveria ser chamado (na verdade o manipulador de arquivos é para isso) em vez de como o arquivo no FTP é chamado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top