编写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标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
对于Python编程中一些重用与缩减的建议
Apr 14 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
Python处理json字符串转化为字典的简单实现
Jul 07 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
Python 实现微信防撤回功能
Apr 29 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
python求平均数、方差、中位数的例子
Aug 22 Python
torch 中各种图像格式转换的实现方法
Dec 26 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
php 安全过滤函数代码
2011/05/07 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
深入浅析php json 格式控制
2015/12/24 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
鼠标图片振动代码
2006/07/06 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
Python 除法小技巧
2008/09/06 Python
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
Python中求对数方法总结
2020/03/10 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
西班牙在线药店:DosFarma
2020/03/28 全球购物
应届毕业生求职信范例分享
2013/12/17 职场文书
预备党员思想汇报
2014/01/08 职场文书
会计助理岗位职责
2014/02/17 职场文书
《识字五》教学反思
2014/03/01 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
利用JavaScript写一个简单计算器
2021/11/27 Javascript