连接到 FTPS 服务器的 ftputil 中的 FTPHost.walk 不返回任何内容

问题描述

我正在尝试使用 ftputilwalk 方法获取 FTP 站点目录下的文件和路径列表:

import ftputil
from ftplib import FTP_TLS

host = 'my_host'
user = 'my_user'
pw = 'my_pw'
folder = '/my/dir'

ftp = ftputil.FTPHost(host,user,pw,session_factory=FTP_TLS)

for root,dirs,files in ftp.walk(folder):
    print(root,files)

但是,没有打印任何内容ftp.walk(folder) 确实返回一个生成器对象,但没有生成任何内容。我错过了什么?也许我没有正确处理 TLS 连接(虽然我没有收到任何错误)?

解决方法

我需要运行 prot_p 作为设置会话的一部分:

class TLSFTPSession(FTP_TLS):

    def __init__(self,host,userid,password):
        FTP_TLS.__init__(self)
        #self.set_debuglevel(2)
        self.connect(host,21)
        self.login(userid,password)
        self.prot_p()

ftp = ftputil.FTPHost(host,user,pw,session_factory=TLSFTPSession)

然后就可以了!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...