编写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 16 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
Python用5行代码写一个自定义简单二维码
Oct 21 Python
python实现桌面壁纸切换功能
Jan 21 Python
Python逐行读取文件内容的方法总结
Feb 14 Python
python线性插值解析
Jul 05 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 Python
详解Python中__new__方法的作用
Mar 31 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/18 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
js给selected添加options的方法
2015/05/06 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
高中考试作弊检讨书
2014/01/14 职场文书
优秀求职信范文分享
2014/01/26 职场文书
行政专员求职信范文
2014/05/03 职场文书
大二学年个人总结
2015/03/03 职场文书
2015入党自传书范文
2015/06/26 职场文书
运动会主持词大全
2015/07/02 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
Oracle笔记
2021/04/05 Oracle