求python连接filezilla FTPS的代码?

求python代码!我在win10上用filezilla搭建的FTPS服务器(不是SFTP),默认端口990。要求使用python3 实现FTPS登陆,上传文件,下载文件。试了几天都报错。网上找的代码没有一个不报错的,请问有会的朋友吗?

ps:已尝试过:from ftplib import FTP_TLS 这个模块,几乎百度上所有解决方案,都连接不上,每次都报错。

参考一下:

from ftplib import FTP
ip = '192.168.8.88'
port = 21
def test_ftp():
    ftp=FTP()
    ftp.connect(ip,port)
    ftp.login("ftpuser","123")#如果是匿名登录,直接ftp.login()
    files = ftp.dir()


if __name__ == '__main__':
    test_ftp()

某些内部线路问题,需要打补丁即可
测试这个,刚刚测试可以的

import ftplib
import socket
import ssl
class ImplicitFTP_TLS(ftplib.FTP_TLS):
    def __init__(self, *args, **kwargs):
        ftplib.FTP_TLS.__init__(self, *args, **kwargs)
        self._sock = None

    @property
    def sock(self):
        return self._sock

    @sock.setter
    def sock(self, value):
        if value is not None and not isinstance(value, ssl.SSLSocket):
            value = self.context.wrap_socket(value)
        self._sock = value

    def ntransfercmd(self, cmd, rest=None):
        conn, size = ftplib.FTP.ntransfercmd(self, cmd, rest) 
        conn = self.sock.context.wrap_socket(
            conn, server_hostname=self.host, session=self.sock.session
        )
        return conn, size
        
    def makepasv(self):
        host, port = ftplib.FTP_TLS.makepasv(self)
        host = socket.gethostbyname(self.host)
        return host, port
        

s = ImplicitFTP_TLS()
s.connect('127.0.0.1',990,timeout=2)    
s.prot_p()
s.login('user','passwd',acct = 'Normal')
s.nlst()    

from ftplib import FTP_TLS

_old_makepasv = FTP_TLS.makepasv

def _new_makepasv(self):
host, port = _old_makepasv(self)
host = self.sock.getpeername()[0]
return host, port

FTP_TLS.makepasv = _new_makepasv

ftps = FTP_TLS()
ftps.connect(host="10.31.32.237",port=990)
ftps.auth()
ftps.prot_p() #可能需要
ftps.login('username','xxxxxx')
ftps.nlst()
ftps.close()


"C:\Program Files\Python39\python.exe" C:/Users/ZTGF/PycharmProjects/pythonProject1/TEST/test2.py
Traceback (most recent call last):
File "C:\Users\ZTGF\PycharmProjects\pythonProject1\TEST\test2.py", line 13, in
ftps.connect(host="10.31.32.237",port=990)
File "C:\Program Files\Python39\lib\ftplib.py", line 162, in connect
self.welcome = self.getresp()
File "C:\Program Files\Python39\lib\ftplib.py", line 244, in getresp
resp = self.getmultiline()
File "C:\Program Files\Python39\lib\ftplib.py", line 230, in getmultiline
line = self.getline()
File "C:\Program Files\Python39\lib\ftplib.py", line 218, in getline
raise EOFError
EOFError

兄弟,还是不行哈,报上面的错误

各位老师,https://filezilla-project.org/download.php?type=server
这是filezilla的服务器端,可以在本机上测试好,再把代码发出来吧。坐待答案哈。

各位老师最好是在本地把代码测试好之后再回答,前面给出了很多百度上的解决方案,试了都有报错,不能解决问题。
不能实现连接filezilla 的FTPS,上传文件,下载文件。

ftp可以嘛