2013-11-18 6 views
0

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

#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 

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

ответ

0

EDIT & РЕШИТЬ: Я нашел мою проблему, она должна быть

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

вместо

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

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

Смежные вопросы