我正在尝试通过Python库pyftpdlib
和ftplib
创建客户端/服务器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没有这样的文件或目录。
那为什么我在更改目录时遇到麻烦了?
答案 0 :(得分:1)
您已将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")