我正在学习使用Python进行Web编程,目前还在基础课程/教程中。
我正试图将文件上传到服务器。这是我的代码:
import ftplib
import sys
filename = sys.argv[1]
connect = ftplib.FTP("***.**.***.**")
connect.login("testuser","pass")
file = open(filename, "rb")
connect.storbinary("STOR " + filename, file)
connect.quit()
这是我遇到的错误:
File "C:\Users\test\putfile.py", line 8, in <module>
connect.storbinary("STOR " + filename, file)
File "C:\Python27\lib\ftplib.py", line 471, in storbinary
conn = self.transfercmd(cmd, rest)
File "C:\Python27\lib\ftplib.py", line 376, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "C:\Python27\lib\ftplib.py", line 339, in ntransfercmd
resp = self.sendcmd(cmd)
File "C:\Python27\lib\ftplib.py", line 249, in sendcmd
return self.getresp()
File "C:\Python27\lib\ftplib.py", line 224, in getresp
raise error_perm, resp
ftplib.error_perm: 550 Permission denied.
由于该文件夹是testuser所拥有的,并且他已被添加到sudoer文件中,具有root权限,因此testuser应该拥有编写文件的权限。
如果我添加以下行,则情况相同:
connect.cwd('/testfolder')
我会收到错误信息 error_perm: 550,无法更改目录。
但是我仍然可以通过 connect.retrlines("RETR " + filename) 命令顺利读取现有文件。
由于我对 Python 和 Linux 都不太熟悉,因此并不清楚自己在做些什么。我需要一些帮助。
retrbinary()
或storbinary()
,其中包含您将在本地计算机上下载文件的文件路径,而是传递一个仅包含服务器上文件名称的变量,就像我所做的那样。 :p - binarysubstrate