编写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中的并发编程实例
Jul 07 Python
进一步探究Python中的正则表达式
Apr 28 Python
浅析Python中else语句块的使用技巧
Jun 16 Python
浅谈python对象数据的读写权限
Sep 12 Python
python使用mysql数据库示例代码
May 21 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
Python从Excel中读取日期一列的方法
Nov 28 Python
使用Python实现跳帧截取视频帧
May 31 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
超实用的 30 段 Python 案例
Oct 10 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 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的FTP学习(一)[转自奥索]
2006/10/09 PHP
文件系统基本操作类
2006/11/23 PHP
php不写闭合标签的好处
2014/03/04 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
在Javascript中 声明时用"var"与不用"var"的区别
2013/04/15 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
深入理解vue中的$set
2017/06/01 Javascript
面包屑导航详解
2017/12/07 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
python正则表达式re模块详细介绍
2014/05/29 Python
Python socket模块方法实现详解
2019/11/05 Python
Python类成员继承重写的实现
2020/09/16 Python
python实现逻辑回归的示例
2020/10/09 Python
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
物流业务员岗位职责
2014/02/08 职场文书
关于保护环境的标语
2014/06/09 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
通知函格式范文
2015/04/27 职场文书
法定授权委托证明书
2015/06/18 职场文书
昆虫记读书笔记
2015/06/26 职场文书
元宵节晚会主持词
2015/07/01 职场文书
在Python中如何使用yield
2021/06/07 Python