编写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网络编程之读取网站根目录实例
Sep 30 Python
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
python 统计代码行数简单实例
May 04 Python
Python算法之求n个节点不同二叉树个数
Oct 27 Python
Python Flask基础教程示例代码
Feb 07 Python
python 字典修改键(key)的几种方法
Aug 10 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
python字符串的拼接方法总结
Nov 18 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 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
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
python映射列表实例分析
2015/01/26 Python
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python Flask-web表单使用详解
2017/11/18 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
Python List cmp()知识点总结
2019/02/18 Python
Django Rest framework权限的详细用法
2019/07/25 Python
python调用支付宝支付接口流程
2019/08/15 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
Python如何定义有可选参数的元类
2020/07/31 Python
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
聚网科技C++面试笔试题
2015/09/01 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
三年级音乐教学反思
2014/01/28 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
社会实践活动报告
2015/02/05 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL