编写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之用while来循环
Oct 02 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
mac系统安装Python3初体验
Jan 02 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
python小程序实现刷票功能详解
Jul 17 Python
python requests使用socks5的例子
Jul 25 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
Python3操作MongoDB增册改查等方法详解
Feb 10 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
pycharm使用技巧之自动调整代码格式总结
Nov 04 Python
使用Python开发冰球小游戏
Apr 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版本常用的排序算法汇总
2015/12/20 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
详解PHP队列的实现
2019/03/14 PHP
短信提示使用 特效
2007/01/19 Javascript
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
2016/07/22 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
angularJS开发注意事项
2018/05/26 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
人工神经网络算法知识点总结
2019/06/11 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
财务助理岗位职责
2013/11/10 职场文书
项目经理任命书范本
2014/06/05 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
荆州古城导游词
2015/02/06 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
《正比例》教学反思
2016/02/23 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
opencv读取视频并保存图像的方法
2021/06/04 Python
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS