问题描述
我正在尝试使用 ftputil 的 walk
方法获取 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)
然后就可以了!