博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重载Python FTP_TLS 实现Implicit FTP Over TLS方式下载文件
阅读量:7001 次
发布时间:2019-06-27

本文共 1690 字,大约阅读时间需要 5 分钟。

对于Python2.7来说,内置的FTP_TLS类并不支持Implicit FTP Over TLS加密方式的FTP Server操作,为支持Implicit FTP Over TLS加密方式,必须重载内置的FTP_TLS类,具体代码如下:

import ftplibclass FTP_TLS(ftplib.FTP_TLS):    def __init__(self, host='', user='', passwd='', acct='', keyfile=None, certfile=None, timeout=180):        ftplib.FTP_TLS.__init__(self, host, user, passwd, acct, keyfile, certfile, timeout)    def connect(self, host='', port=0, timeout=-999):        if host != '':            self.host = host        if port > 0:            self.port = port        if timeout != -999:            self.timeout = timeout        try:            self.sock = socket.create_connection((self.host, self.port), self.timeout)            self.af = self.sock.family            self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, ssl_version=ssl.PROTOCOL_TLSv1)            self.file = self.sock.makefile('rb')            self.welcome = self.getresp()        except Exception as e:            print e        return self.welcome    def download(self, remote_file_name, local_file_name):        with open(local_file_name, 'wb') as fp:            self.retrbinary('RETR %s' % remote_file_name, fp.write)

下载的示例代码如下所示:

host = 'XXX'    port = 2222    user = 'user'    password = 'pass'    local_dir = './data'    ftp = FTP_TLS()    ftp.connect(host, port)    LOG.debug('begin to login')    ftp.login(user, password)    LOG.debug('login succeed')    LOG.debug('welcome info = %s', ftp.getwelcome())    ftp.prot_p()    ftp.cwd('/crexbatch')    ftp.download('People.zip', 'People.zip')    ftp.retrlines('LIST')    fnames = ftp.nlst()    open('crexbatch.txt', 'wb').write('\r\n'.join(fnames))

 

转载于:https://www.cnblogs.com/Jerryshome/p/4801066.html

你可能感兴趣的文章
请问set JAVA_OPTS的各项參数是什么意思?
查看>>
Linux安装JDK
查看>>
C#常用控件缩写
查看>>
.NET足球赛事资料数据库平台SmartLottery开源发布——全球足球联赛应有尽有
查看>>
关于Eclipse生成和导入Patch文件.
查看>>
如何使用Photoshop(PS)将图片的底色变为透明
查看>>
IDEA实现序列号接口
查看>>
人件札记:保持高效的办公室环境
查看>>
Mysql中使用流式查询避免数据量过大导致OOM
查看>>
为什么中台是传统企业数字化转型的关键?
查看>>
中国技术开放日专场在美国旧金山隆重开幕
查看>>
从责任界定和问题预警角度 解读全栈溯源对DevOps的价值
查看>>
百度发布开源智能边缘计算平台OpenEdge
查看>>
JavaScript引擎V8 5.1遵循了更多的ECMAScript规范并支持WASM
查看>>
广度、深度、易用性,详解6大机器学习云
查看>>
雇佣和留住开发人员,打造优秀的团队
查看>>
关于5G被激烈讨论的那些争端和冲突
查看>>
Jenkins部署码云SpringBoot项目
查看>>
抛弃NVelocity,来玩玩Razor
查看>>
在JavaScript面向对象编程中使用继承(1)
查看>>