【问题标题】:Unable to ftp a file using python ftplib, but successful using curl无法使用 python ftplib ftp 文件,但使用 curl 成功
【发布时间】:2016-09-27 23:42:39
【问题描述】:

使用 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' ftp://192.168.18.75 --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()

有什么想法吗?

【问题讨论】:

    标签: python curl ftp ftplib


    【解决方案1】:

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

    使用 CURL 时,您无需指定远程文件的任何路径。所以文件被上传到当前的 FTP 工作目录。

    正如@acw1668 在 cmets 中已经建议的那样,使用:

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

    【讨论】:

    • 还有一条评论,在 python 中创建与 ftplib 的 ftp 连接时,我必须明确将被动模式设置为 True。文档提到它是默认启用的,但不管文档如何,我都必须将模式声明为显式被动。 docs.python.org/2/library/ftplib.html
    猜你喜欢
    • 2011-03-21
    • 2012-07-19
    • 2019-09-12
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    相关资源
    最近更新 更多