编写Python脚本来实现最简单的FTP下载的教程

 更新时间:2015年05月04日 10:58:28   投稿:goldensun  
这篇文章主要介绍了编写Python脚本来实现最简单的FTP下载的教程,主要用到了ftplib模块,无图形界面...需要的朋友可以参考下

访问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 sort、sorted高级排序技巧分享(key的使用)

    python sort、sorted高级排序技巧分享(key的使用)

    这篇文章主要介绍了python sort、sorted高级排序技巧(key的使用),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Python实现自动化处理每月考勤缺卡数据

    Python实现自动化处理每月考勤缺卡数据

    不管是上学还是上班都会统计考勤,有些学校或公司会对每月缺卡次数过多(比如三次以上)的人员进行处罚。本文提供了Python自动处理考勤和日志缺失的方法,需要的可以参考一下
    2022-06-06
  • 浅谈Python的正则表达式

    浅谈Python的正则表达式

    这篇文章主要介绍了浅谈Python的正则表达式,正则表达式本身是独立于编程语言的知识,但是它又依附于编程语言,需要的朋友可以参考下
    2023-04-04
  • Python 编码处理-str与Unicode的区别

    Python 编码处理-str与Unicode的区别

    本文主要介绍Python 编码处理的问题,这里整理了相关资料,并详细说明如何处理编码问题,有需要的小伙伴可以参考下
    2016-09-09
  • python测试攻略pytest.main()隐藏利器实例探究

    python测试攻略pytest.main()隐藏利器实例探究

    在Pytest测试框架中,pytest.main()是一个重要的功能,用于启动测试执行,它允许以不同方式运行测试,传递参数和配置选项,本文将深入探讨pytest.main()的核心功能,提供丰富的示例代码和更全面的内容,
    2024-01-01
  • python中的print()输出

    python中的print()输出

    print() 方法用于打印输出,最常见的一个函数。这篇文章主要介绍了python的print()输出 ,需要的朋友可以参考下
    2019-04-04
  • python 七种邮件内容发送方法实例

    python 七种邮件内容发送方法实例

    这篇文章主要介绍了python 七种邮件内容发送方法实例,需要的朋友可以参考下
    2014-04-04
  • python查找与排序算法详解(示图+代码)

    python查找与排序算法详解(示图+代码)

    这篇文章主要介绍了python查找与排序算法详解(示图+代码),文章通过二分查找展开主题详细内容,需要的朋友可以参考一下
    2022-07-07
  • python 默认参数相关知识详解

    python 默认参数相关知识详解

    这篇文章主要介绍了python 默认参数相关知识详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • python使用cartopy在地图中添加经纬线的示例代码

    python使用cartopy在地图中添加经纬线的示例代码

    gridlines可以根据坐标系,自动绘制网格线,这对于普通绘图来说显然不必单独拿出来说说,但在地图中,经纬线几乎是必不可少的,本文将给大家介绍了python使用cartopy在地图中添加经纬线的方法,需要的朋友可以参考下
    2024-01-01

最新评论