编写Python脚本来实现最简单的FTP下载的教程


Posted in Python onMay 04, 2015

访问FTP,无非两件事情:upload和download,最近在项目中需要从ftp下载大量文件,然后我就试着去实验自己的ftp操作类,如下(PS:此段有问题,别复制使用,可以参考去试验自己的ftp类!)

import os
from ftplib import FTP
 
class FTPSync():
  def __init__(self, host, usr, psw, log_file):
    self.host = host
    self.usr = usr
    self.psw = psw
    self.log_file = log_file
   
  def __ConnectServer(self):
    try:
      self.ftp = FTP(self.host)
      self.ftp.login(self.usr, self.psw)
      self.ftp.set_pasv(False)
      return True
    except Exception:
      return False
   
  def __CloseServer(self):
    try:
      self.ftp.quit()
      return True
    except Exception:
      return False
   
  def __CheckSizeEqual(self, remoteFile, localFile):
    try:
      remoteFileSize = self.ftp.size(remoteFile)
      localFileSize = os.path.getsize(localFile)
      if localFileSize == remoteFileSize:
        return True
      else:
        return False
    except Exception:
      return None
     
  def __DownloadFile(self, remoteFile, localFile):
    try:
      self.ftp.cwd(os.path.dirname(remoteFile))
      f = open(localFile, 'wb')
      remoteFileName = 'RETR ' + os.path.basename(remoteFile)
      self.ftp.retrbinary(remoteFileName, f.write)
       
      if self.__CheckSizeEqual(remoteFile, localFile):
        self.log_file.write('The File is downloaded successfully to %s' + '\n' % localFile)
        return True
      else:
        self.log_file.write('The localFile %s size is not same with the remoteFile' + '\n' % localFile)
        return False
    except Exception:
      return False
   
  def __DownloadFolder(self, remoteFolder, localFolder):
    try:
      fileList = []
      self.ftp.retrlines('NLST', fileList.append)
      for remoteFile in fileList:
        localFile = os.path.join(localFolder, remoteFile)
        return self.__DownloadFile(remoteFile, localFile)
    except Exception:
      return False
   
  def SyncFromFTP(self, remoteFolder, localFolder):
    self.__DownloadFolder(remoteFolder, localFolder)
    self.log_file.close()
    self.__CloseServer()
Python 相关文章推荐
Python操作SQLite简明教程
Jul 10 Python
python批量提交沙箱问题实例
Oct 08 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
Apr 17 Python
python调用fortran模块
Apr 08 Python
python爬取51job中hr的邮箱
May 14 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
Django+Xadmin构建项目的方法步骤
Mar 06 Python
python中的Elasticsearch操作汇总
Oct 30 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
Tensorflow 实现释放内存
Feb 03 Python
如何清空python的变量
Jul 05 Python
Python下线程之间的共享和释放示例
May 04 #Python
简单介绍Python中利用生成器实现的并发编程
May 04 #Python
简单分析Python中用fork()函数生成的子进程
May 04 #Python
python实现从字典中删除元素的方法
May 04 #Python
Python中利用原始套接字进行网络编程的示例
May 04 #Python
python通过索引遍历列表的方法
May 04 #Python
python实现将元祖转换成数组的方法
May 04 #Python
You might like
打造计数器DIY三步曲(中)
2006/10/09 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
jquery 插件开发方法小结
2009/10/23 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
vue-axios使用详解
2017/05/10 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
Python断言assert的用法代码解析
2018/02/03 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
Python restful框架接口开发实现
2020/04/13 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
构造方法和其他方法的区别
2016/04/26 面试题
自我评价的正确写法
2013/09/19 职场文书
自荐信格式
2013/12/01 职场文书
平面设计师工作职责范文
2013/12/03 职场文书
博士学位自我鉴定范文
2013/12/26 职场文书
数控技术学生的自我评价
2014/02/15 职场文书
《夜晚的实验》教学反思
2014/02/19 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
男人帮观后感
2015/06/18 职场文书
爱国影片观后感
2015/06/18 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python