编写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正则表达式抓取成语网站
Nov 20 Python
python实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
python实现比较两段文本不同之处的方法
May 30 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
centos6.7安装python2.7.11的具体方法
Jan 16 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
python生成密码字典的方法
Jul 06 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
Oct 31 Python
Python面向对象进阶学习
May 21 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
Jan 28 Python
详解python的内存分配机制
May 10 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/03 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
python 处理dataframe中的时间字段方法
2018/04/10 Python
python 反向输出字符串的方法
2018/07/16 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
python 整数越界问题详解
2019/06/27 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
人事部主管岗位职责
2013/12/26 职场文书
社团文化节策划书
2014/02/01 职场文书
员工合理化建议书
2014/05/19 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
会计简历自我评价
2015/03/10 职场文书
2015年导购员工作总结
2015/04/25 职场文书
初中团支书竞选稿
2015/11/21 职场文书
高中班主任心得体会
2016/01/07 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL