【发布时间】:2017-08-24 19:34:04
【问题描述】:
情况:
我正在尝试编写一个 ftp 文件自动启动和下载程序。它将遍历我的文件并自动上传新文件。 ftp 服务器内置在我的 wifi 路由器中。我已将 ftp 服务器包含在我的 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.
现在我的问题(显然)是:我该如何解决这个问题?
【问题讨论】:
-
这种情况会发生在名为“C++”以外的目录吗?
-
@pvg 是的,我已经尝试了其他几个...相同的结果
-
您是否能够使用常规 ftp 客户端写入这些目录?更一般地说,如果您有任何其他协议选择,请使用它而不是 ftp
-
@pvg 是的,我已经使用了我的 wifi 路由器的 webclient,并将它集成到我的文件系统中,一切正常。我可以选择哪些其他协议,例如tcp?
-
我不确定什么在哪里运行并连接到什么。但是您可以将内容 scp 到您的 ubuntu 盒子或通过 ssh 隧道连接到它并做任何事情。 ftp 是一个烦人且挑剔的双向协议,如果你能提供帮助,应该避免它。
标签: python python-3.x ftp python-3.5