我正在努力用Python将文件上传到FTPS站点(FTP_TLS)

我正在努力用Python将文件上传到FTPS站点(FTP_TLS),python,connection,ftp-client,ftplib,ftps,Python,Connection,Ftp Client,Ftplib,Ftps,它首先连接- *resp* '200 Port command successful' *cmd* 'STOR DT_20201106.csv' *resp* '150 Opening data channel for file upload to server of "/test/DT_20201106.csv"' 但是我得到了一个错误,错误消息说-#问题#7995:如果没有设置默认超时,则侦听 超时:超时 这是我正在使用的代码(我在这里浏览了前面的答案,并尝试合并这些解

它首先连接-

*resp* '200 Port command successful'
*cmd* 'STOR DT_20201106.csv'
*resp* '150 Opening data channel for file upload to server of "/test/DT_20201106.csv"'
但是我得到了一个错误,错误消息说-#问题#7995:如果没有设置默认超时,则侦听 超时:超时

这是我正在使用的代码(我在这里浏览了前面的答案,并尝试合并这些解决方案)

from ftplib import FTP_TLS
import sys, os
import ftplib
import ssl
import ftputil


ftp_server='servername'
username='username'
password='password'
port='990'
destdir="/test"

class ImplicitFTP_TLS(ftplib.FTP_TLS):
    """FTP_TLS subclass that automatically wraps sockets in SSL to support implicit FTPS."""

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._sock = None

    @property
    def sock(self):
        """Return the socket."""
        return self._sock

    @sock.setter
    def sock(self, value):
        """When modifying the socket, ensure that it is ssl wrapped."""
        if value is not None and not isinstance(value, ssl.SSLSocket):
            value = self.context.wrap_socket(value)
        self._sock = value


ftps = FTP_TLS(ftp_server)
ftps.set_debuglevel(1)
ftps.set_pasv(False)
ftps.connect(port=990, timeout=10)
ftps.login(username, password)
ftps.prot_p()
#ftps.ccc()
ftps.cwd(destdir)
ftps.pwd()

root="C:\\Client work\\test"
destdir="/test"

try:
       ftps.cwd(destdir)
except Exception:
       ftps.mkd(destdir)
for (dir, _, files) in os.walk(root):
       newdir=destdir+dir[len(root):len(dir)].replace("\\","/")
       try:
               ftps.cwd(newdir)
       except Exception:
               ftps.mkd(newdir)
       for f in files:
               file = open(os.path.join(dir, f),'rb')
               ftps.storbinary('STOR '+f, 'DT_20201106.csv',blocksize=8192)
               file.close()
ftps.close()