Передача файлов Python ftplib error_perm

Я пытаюсь автоматизировать тест в python 2.7 (в eclipse на linux ubuntu 12.04), и мне нужно протестировать FTP-сервер следующим образом: мне нужно создать файл на хосте, передать его по FTP на другой компьютер, а затем передать его обратно на мой хост под другим именем. Затем у меня есть два файла, которые я должен сравнить. Я начал так:

    #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

Выполнение этого кода дает мне следующую ошибку:

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

Кто-нибудь знает, что я сделал не так?


person RandomDisplayName    schedule 18.11.2013    source источник


Ответы (1)


РЕДАКТИРОВАТЬ И РЕШИТЬ: я нашел свою проблему, она должна быть

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

вместо

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

так как я думал, что после RETR я должен сказать, как должен называться файл (на самом деле для этого предназначен файловый обработчик), а не как файл на FTP вызывается.

person RandomDisplayName    schedule 19.11.2013