pyftpdlib调用add_user函数报错缺少homedir参数的原因是什么
问题原因
你没有对DummyAuthorizer类进行实例化,直接将类本身赋值给了authorizer变量:
# 错误写法,缺少类实例化的括号 authorizer = DummyAuthorizer
类的实例方法(比如add_user)默认第一个参数是类实例本身(也就是self),如果直接调用类本身的方法,需要手动传入self参数,否则你传入的参数会整体前移一位,导致参数匹配错位:你传的'admin'被识别为self,'adminpass'被识别为username,'.'被识别为password,系统自然认为你缺少homedir参数,才会抛出对应的错误。
同时你的代码还缺少os、socket模块的导入,FTPHandler的配置逻辑也存在问题,运行时还会触发其他报错。
解决方法
修正类实例化逻辑,补全缺失的导入,调整后的完整可运行代码如下:
import socket import os from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer ip = socket.gethostbyname(socket.gethostname()) PATH = 'C:/Users/cuerv/Downloads/My code/Camera/Recordings' os.chdir(PATH) addr = (ip,21) # 实例化DummyAuthorizer authorizer = DummyAuthorizer() authorizer.add_user('admin','adminpass','.',perm='elradfmw') # 给FTPHandler绑定授权器 FTPHandler.authorizer = authorizer server = FTPServer(addr, FTPHandler) server.serve_forever()
内容的提问来源于stack exchange,提问作者Saw
相关产品推荐
相关产品推荐

