我试图通过Python库pyftpdlibftplib创建客户端/服务器FTP。

我创建了一个服务器,如下所示:

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
import os

authorizer = DummyAuthorizer()
authorizer.add_user("user", "12345", ".",  perm="elradfmw")
authorizer.add_anonymous(os.getcwd())

handler = FTPHandler
handler.authorizer = authorizer

address = ('',1024)
server = FTPServer((address), handler)
server.serve_forever()


我连接到服务器:

from ftplib import FTP
import os
ftp = FTP('')
ftp.connect('localhost',1024)
ftp.login(user='user', passwd = '12345')


我能够作为python控制台输出“登录成功”消息。

现在的问题是我不确定我在哪个目录中以及如何更改目录。

如果我使用print(ftp.pwd()),我会回来:

'/'


Windows上的哪个对我来说没有多大意义。

我假设它是C:\,但是如果我尝试更改目录,



ftp.cwd(r"/Users/Moondra/Desktop/")
ftp.cwd(r"Users\Moondra\Desktop")
ftp.cwd(r"\Users\Moondra\Desktop")


我得到:


  ftplib.error_perm:550没有这样的文件或目录。


那么,为什么我在更改目录时遇到麻烦?

最佳答案

您已将user植根到目录,该目录从以下位置启动FTP服务器:

authorizer.add_user("user", "12345", ".", perm="elradfmw")


.表示“此/当前工作目录”。这仅出于测试目的,而对于生产用途则没有意义。



如果要允许用户访问整个驱动器,请在该驱动器上进行root操作。这可能应该这样做:

authorizer.add_user("user", "12345", "C:\\", perm="elradfmw")


尽管出于安全原因,您应该限制用户。

可能是这样的:

authorizer.add_user("user", "12345", "C:\\Users\\Moondra", perm="elradfmw")

关于python - 更改FTP服务器的目录(ftplib,pyftpdlib),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55715888/

10-11 23:12
查看更多