Python之FTP传输
2024-09-05 21:41:48
访问FTP,无非两件事情:upload和download,最近在项目中需要从ftp下载大量文件,然后我就试着去实验自己的ftp操作类,如下(PS:此段有问题,别复制使用,可以参考去试验自己的ftp类!)
'''
Created on Jun 19, 2013 @author: Berlin
'''
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()
还有问题存在,最终版本不在此共享!
最终版本主要改进:多线程上传与下载功能!
最新文章
- 《你不知道的JavaScript》整理(二)——this
- uicode编码解码
- 《Entity Framework 6 Recipes》中文翻译系列 (28) ------ 第五章 加载实体和导航属性之测试实体是否加载与显式加载关联实体
- [C++基础]关于对象的创建及内存分配
- (37) 在命令行调用API
- Android IOS WebRTC 音视频开发总结(七十)-- 移动端音视频技术优化的七个方向
- 在html中注释对 <;include XXXXXXXX />;是没有影响的
- yaffs2文件系统镜像分析
- Hibernate3.3用户手册摘要-1-辅助类,session
- MySQL锁机制
- 我和小美的撸码日记(1)之软件也需靠脸吃饭,带您做张明星脸(附后台经典框架 DEMO 下载)
- CSS3 布局
- [置顶] 和孩子们一起学Python编程
- Java容器---Map基础
- UVA 10382 - Watering Grass【贪心+区间覆盖问题+高精度】
- javaScript执行环境、作用域链与闭包
- winform 以不规则图形背景显示窗体
- Python基础:七、注释
- ios端滚动优化
- 序列化与Json
热门文章
- APP产品体验
- Windows 10下mysql 64位 安装(mysql-5.7.11-winx64安装)
- UIView和Masonry实现动画效果
- 面试题--JAVA中静态块、静态变量加载顺序
- Microsoft Sql server2005的安装步骤和常见问题解决方案
- 解决Errno::ENOENT: No Such File or Directory - Jekyll ~ Octopress and El Capitan
- 4个Linux服务器监控工具
- PyCharm如何配置断点调试功能
- python matplotlib 可视化操作实例
- 快学UiAutomator创建第一个实例