重载Python FTP_TLS 实现Implicit FTP Over TLS方式下载文件
2015-09-11 15:29
1031 查看
对于Python2.7来说,内置的FTP_TLS类并不支持Implicit FTP Over TLS加密方式的FTP Server操作,为支持Implicit FTP Over TLS加密方式,必须重载内置的FTP_TLS类,具体代码如下:
下载的示例代码如下所示:
import ftplib class 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))
相关文章推荐
- 一些杂七杂八的技巧和注意项
- python 各种测试框架
- python 安装 pip 安装lxml 出现错误
- Sublime Text 3 PHP Python 配置
- python实现月份和年份+n
- Python语言打印斐波那契数列
- python2与python3的print及字符串格式化总结
- 《零基础学python》(第二版)
- python中str和basestring
- Python 实现文件复制、删除
- Python调用 c 的函数
- Python基础学习笔记之二
- solr 5.2.1学习笔记-4-python客户端
- 如何让Notepad++添加Python运行方式.精讲
- python中set比list更耗内存
- python脚本中的函数开发时怎么调试(__name__=="__main__")
- python下运行报"SyntaxError: Non-ASCII character '/xe6' "错误解决方法
- python相关文件方法
- chapter4 python技巧
- python元组的修改和删除