编写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编码爬坑指南(必看)
Jun 10 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
python交换两个变量的值方法
Jan 12 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
python和php哪个容易学
Jun 19 Python
对PyTorch中inplace字段的全面理解
May 22 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 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获取表单所有复选框的值的方法
2014/08/28 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
python中随机函数random用法实例
2015/04/30 Python
Python 多线程的实例详解
2017/09/07 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
python openpyxl使用方法详解
2019/07/18 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
产品促销活动策划书
2014/01/15 职场文书
企业文化建设实施方案
2014/03/22 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
会计求职自荐信
2014/06/20 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技