编写Python脚本来实现最简单的FTP下载的教程
作者:goldensun 时间:2022-11-12 01:25:45
访问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
0
投稿
猜你喜欢
利用Tensorflow的队列多线程读取数据方式
2021-12-24 17:32:30
python退出循环的方法
2022-06-10 07:24:35
Python实现抓取城市的PM2.5浓度和排名
2023-07-01 11:13:33
JavaScipt中栈的实现方法
2024-04-18 09:33:49
Mysql 5.7.19 免安装版遇到的坑(收藏)
2024-01-19 12:18:39
在NumPy中创建空数组/矩阵的方法
2023-11-02 05:30:35
The Story of Mr.Gray — Web 交互设计“灰色”的8类应用
2009-12-30 16:57:00
Python连接Mysql实现图书借阅系统
2024-01-17 12:08:26
Python动态强类型解释型语言原理解析
2021-12-24 08:09:27
交互设计实用指南系列(2) –可及
2010-01-21 12:48:00
常用的Python代码调试工具总结
2023-05-17 19:24:29
在pycharm中python切换解释器失败的解决方法
2021-02-01 20:53:58
使链接具有最大化、最小化的功能代码
2008-02-24 16:43:00
React路由鉴权的实现方法
2024-05-02 17:06:12
python实现一个围棋小游戏
2022-02-02 18:52:50
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2023-04-03 12:13:33
Python常用库Numpy进行矩阵运算详解
2023-01-04 02:45:52
关注前端开发流程
2009-12-31 17:38:00
Python词云的正确实现方法实例
2021-08-05 10:53:41
Python学习之流程控制与条件判断总结
2023-08-20 13:37:02