情况:
我尝试自动编写ftp文件并下载程序。它将遍历我的文件并自动上传新文件。 ftp服务器构建到我的wifi路由器中。我已将ftp-server包含在我的Ubuntu文件系统中,一切正常(我可以访问所有内容)。主站点就像家庭文件夹和我自己的文件夹。
现在我的问题:
到目前为止,我能够连接到服务器并切换到我的目录并列出文件夹。但是,如果我想从这个目录更改为例如C ++(它是我目录中的一个文件夹),我将收到一条错误消息,说明"权限被拒绝"。用于登录的用户帐户与我的文件系统包含中使用的帐户相同。
python 3代码:
from ftplib import FTP_TLS
class ftp_client():
def __init__(self, host, unandpw):
self.host = host
self.logindata = unandpw #should be a touple
self.ftp = FTP_TLS(self.host)
self.ftp.login(self.logindata[0], self.logindata[1])
self.ftp.prot_p()
def scan(self):
self.ftp.cwd("/" + self.logindata[0] + "/")
self.listoffiles = self.ftp.nlst()
print("list of files: " + str(self.listoffiles))
for file in self.listoffiles:
self.ftp.cwd("/" + str(file) + "/")
self.listoffilesinfiles = self.ftp.nlst()
print(self.listoffilesinfiles)
self.ftp.cwd("/" + self.logindata[0] + "/")
我通过外部主文件调用它......
控制台输出:
list of files: ['C++', 'Documents', 'Pictures', 'Python', 'School',
'share', 'Videos']
Traceback (most recent call last):
File "main.py", line 5, in <module>
ftp.scan()
File "/home/simon/Python/autoserversync/client.py", line 18, in scan
self.ftp.cwd("/" + str(file) + "/")
File "/usr/lib/python3.5/ftplib.py", line 630, in cwd
return self.voidcmd(cmd)
File "/usr/lib/python3.5/ftplib.py", line 277, in voidcmd
return self.voidresp()
File "/usr/lib/python3.5/ftplib.py", line 250, in voidresp
resp = self.getresp()
File "/usr/lib/python3.5/ftplib.py", line 245, in getresp
raise error_perm(resp)
ftplib.error_perm: 550 /C++/: Permission denied.
现在我的问题(显然)是:我该如何解决这个问题?
答案 0 :(得分:0)
在self.ftp.cwd("/" + str(file) + "/")
行中,您在路径的开头添加斜杠。请记住,在Unix中,以斜杠开头的路径是从根目录开始的绝对路径。
如果您的文件夹位于您的主目录中(根据他们的名字判断我猜他们是这样),请尝试将其更改为self.ftp.cwd("~/" + str(file) + "/")
。