質問

Python 2.7(Linux Ubuntu 12.04のEclipse)でテストを自動化しようとしており、次のようにFTPサーバをテストする必要があります。 私はホスト上にファイルを作成し、それを別のPCに転送してから別の名前で私のホストに転送する必要があります。それから私は比較しなければならない2つのファイルを持っています。私はこのように始めました:

    #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
.

誰もが私が間違ったことを知っていますか?

役に立ちましたか?

解決

編集&解決策:私の問題を見つけました、それは

になるべきです
ftp.retrbinary("RETR {0} ".format(firstFilename), f.write)
.

の代わりにp>
ftp.retrbinary("RETR {0} ".format(secondFilename), f.write)
.

FTPのファイルの呼び出されるのではなく、ファイルの呼び出し方法(実際にはファイルハンドラはそのためのものです)を指示する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top