无法使用python ftplib ftp文件,但使用curl成功

时间:2016-09-27 23:42:39

标签: python curl ftp

使用python的ftplib时,将小文本文件上传到ftp站点时收到以下错误:

      File "ftpuploader.py", line 13, in uploadFilePath
    ftp.storbinary("STOR {}".format(filepath), file)
  File "/usr/lib64/python2.7/ftplib.py", line 471, in storbinary
    conn = self.transfercmd(cmd, rest)
  File "/usr/lib64/python2.7/ftplib.py", line 376, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/usr/lib64/python2.7/ftplib.py", line 358, in ntransfercmd
    resp = self.sendcmd(cmd)
  File "/usr/lib64/python2.7/ftplib.py", line 249, in sendcmd
    return self.getresp()
  File "/usr/lib64/python2.7/ftplib.py", line 224, in getresp
    raise error_perm, resp
ftplib.error_perm: 553 Could not create file.

连接到另一个系统时,我成功使用以下代码。我可以登录,更改目录,但无法创建文件。我可以使用filezilla或简单的curl命令加载文件,curl -T'/ path / to / file'this Stack Overflow post --user admin:password

ftp = FTP(address)
ftp.login(username, password)
ftp.cwd('/gui')
file = open(filepath, 'rb')
ftp.storbinary("STOR {}".format(filepath), file)
ftp.retrlines('LIST') # list directory contents     
file.close()
ftp.quit()

任何想法?

1 个答案:

答案 0 :(得分:2)

您正在将路径传递到STOR命令的本地路径(与open(filepath, 'rb')使用的路径相同)。

使用CURL时,您不指定远程文件的任何路径。因此文件会上传到当前的FTP工作目录。

如@ acw1668的评论中所述,请使用:

ftp.storbinary("STOR {}".format(os.path.basename(filepath)), file)