编写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 相关文章推荐
解决python2.7用pip安装包时出现错误的问题
Jan 23 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
python实现用户答题功能
Jan 17 Python
Selenium定时刷新网页的实现代码
Oct 31 Python
python调用摄像头拍摄数据集
Jun 01 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
python中下标和切片的使用方法解析
Aug 27 Python
解决django-xadmin列表页filter关联对象搜索问题
Nov 15 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
Sep 25 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
拖动时防止选中
2017/02/03 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
Django websocket原理及功能实现代码
2020/11/14 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
校园十佳歌手策划书
2014/01/22 职场文书
社区工作感言
2014/02/21 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
2015年公司工作总结
2015/04/25 职场文书
2015年材料员工作总结
2015/04/30 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
python中__slots__节约内存的具体做法
2021/07/04 Python