python 3:ftp命令的权限" dir"在某些目录中被拒绝

时间:2017-03-30 18:03:20

标签: python python-3.x ftp python-3.5

情况:

我尝试自动编写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.

现在我的问题(显然)是:我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

self.ftp.cwd("/" + str(file) + "/")行中,您在路径的开头添加斜杠。请记住,在Unix中,以斜杠开头的路径是从根目录开始的绝对路径。

如果您的文件夹位于您的主目录中(根据他们的名字判断我猜他们是这样),请尝试将其更改为self.ftp.cwd("~/" + str(file) + "/")