【发布时间】:2020-12-13 02:06:50
【问题描述】:
我刚刚开始学习 Python。我正在尝试按如下方式上传文件:
import ftplib
myurl = 'ftp.example.com'
user = 'user'
password = 'password'
myfile = '/Users/mnewman/Desktop/requested.txt'
ftp = ftplib.FTP(myurl, user, password)
ftp.encoding = "utf-8"
ftp.cwd('/public_html/')
ftp.storbinary('STOR '+myfile, open(myfile, 'rb'))
但是得到以下错误:
Traceback (most recent call last):
File "/Users/mnewman/.spyder-py3/temp.py", line 39, in <module>
ftp.storbinary('STOR '+myfile, open(myfile, 'rb'))
File "ftplib.pyc", line 487, in storbinary
File "ftplib.pyc", line 382, in transfercmd
File "ftplib.pyc", line 348, in ntransfercmd
File "ftplib.pyc", line 275, in sendcmd
File "ftplib.pyc", line 248, in getresp
error_perm: 553 Can't open that file: No such file or directory
“那个文件”指的是什么,我需要做什么来解决这个问题?
【问题讨论】:
-
这是一条响应消息,表示它是由 ftp 服务器生成的。目标机器上是否存在
/public_html,ftp服务器进程是否有写入权限? -
我想展示的是,我可以使用 curl 将相同的文件上传到主机上的相同目录。我的代码中一定有错字或其他错误,但我找不到它
-
好吧,我瞎了。您在 STOR 上使用完全限定名称。那应该是远程名称。
ftp.storbinary('STOR requested.txt', open(myfile, 'rb'))(或使用os.path.split(myfile)[1]) -
谢谢。使用远程名称有效。感谢您的帮助。