Python ftplib 文件传输 error_perm

标签 python linux file ftp ftplib

我正在尝试在 python 2.7 中自动化测试(在 linux ubuntu 12.04 上的 eclipse 中),并且我需要测试 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

有人知道我做错了什么吗?

最佳答案

编辑并解决:我发现了我的问题,它应该是

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

而不是

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

因为我认为 RETR 之后我必须告诉应该如何调用该文件(实际上文件处理程序就是用于此目的),而不是如何调用 FTP 上的文件。

关于Python ftplib 文件传输 error_perm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20048682/

相关文章:

python - 使用带有多个引用参数的子进程 Popen

python - 从 Django 的 RawQuerySet 获取数据库游标

python - 在超出范围的索引处插入列表 - 行为类似于追加

linux - "/usr/bin/ld: cannot find -lz"

php - 能够从Windows连接到Linux上的mysql数据库的步骤是什么

c++ - 如何更快地读取多个文件?

java - 在 Uri 旁边创建新文件

python - 调整数组大小并用插值填充

linux - 停止在 kestrel 上运行的正在运行的 dotnet 核心网站

C++ 创建文件时出错(名称基于其他文件名)