Python之FTP传输
访问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()
还有问题存在,最终版本不在此共享!
最终版本主要改进:多线程上传与下载功能!
Python之FTP传输的更多相关文章
- Python之FTP传输-乾颐堂
访问FTP,无非两件事情:upload和download,最近在项目中需要从ftp下载大量文件,然后我就试着去实验自己的ftp操作类,如下(PS:此段有问题,别复制使用,可以参考去试验自己的ftp类! ...
- Python+USB+Vnet+FTP传输文件开发记录
做一个Python+USB+Vnet+FTP传输文件开发记录
- python实现FTP程序
python实现FTP程序 程序源码 上传功能 查看文件 cd功能 创建目录 程序源码 目录结构 服务端 主程序 import optparse import socketserver import ...
- [源码]python Scapy Ftp密码嗅探
[源码]python Scapy Ftp密码嗅探 原理很简单,FTP密码明文传输的 截取tcp 21端口User和Pass数据即可 Scapy框架编译程序较大(一个空程序都25M),所以就不提供exe ...
- Python实现FTP服务功能
本文从以下三个方面, 阐述Python如何搭建FTP服务器 一. Python搭建FTP服务器 二. FTP函数释义 三. 查看目录结构 四. 上传下载程序 一. Python搭建FTP服务器 1. ...
- Python和FTP
1.HTTP主要用于基于Web的文件下载以及访问Web服务,一般客户端无须登录就可以访问服务器上的文件和服务.大部分HTTP文件传输请求都用于获取网页(即将网页文件下载到本地). 2.FTP主要用于匿 ...
- 【转】Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍
Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍 FTP 是File Transfer Protocol(文件传输协议)的英文简称,它基于传输层协议TCP建立,用于Interne ...
- shell判断FTP传输是否成功
#!/bin/bash ##判断FTP传输文件是否成功 exec 6>&1 1>/tmp/lzc.txt ##打开一个文件描述符6,保存文件描述符1的属性,然后将描述1重定向到lz ...
- Python之FTP多线程下载文件之分块多线程文件合并
Python之FTP多线程下载文件之分块多线程文件合并 欢迎大家阅读Python之FTP多线程下载系列之二:Python之FTP多线程下载文件之分块多线程文件合并,本系列的第一篇:Python之FTP ...
随机推荐
- 海康威视采集卡结合opencv使用(两种方法)-转
(注:第一种方法是我的原创 ^_^. 第二种方法是从网上学习的.) 第一种方法:利用 板卡的API: GetJpegImage 得到 Jpeg 格式的图像数据,然后用opencv里的一个函数进行解码 ...
- Java文件操作系列[2]——使用JXL操作Excel文件
由于java流无法实现对Excel文件的读写操作,因此在项目中经常利用第三方开源的组件来实现.支持Excel文件操作的第三方开源组件主要有Apache的POI和开源社区的JXL. 总体来说,二者的区别 ...
- 【数据库-Azure SQL Database】SQL Server 如何将数据库备份到 Azure Storage
打开本地的 SQL Server Management Studio.首先创建 Credentials.命令如下: IF NOT EXISTS (SELECT * FROM sys.credent ...
- Python之Mac Scrapy爬虫小记
最近在尝试用Python爬虫,在装Scrapy的过程中遇到了一些麻烦. 上网搜索资料也未能解决command not found scrapy的报错. 最后我删除scrapy,用pip3.6 inst ...
- poj3264 划分树
题意: 给定一个序列,询问区间中最大数减去最小数的结果 和2104差不多, 代码贴过来就OK了 #include <iostream> #include <algorithm> ...
- react中的setState的使用和深入理解
前端框架从MVC过渡到MVVM.从DOM操作到数据驱动,一直在不断的进步着,提升着, angular中用的是watcher对象,vue是观察者模式,react就是state了,他们各有各的特点,没有好 ...
- ucosii(2.89)semaphore 应用要点
semaphore 的作用:1,允许一个任务与其他任务(中断)同步.2,取得共享资源使用权.3,标志事件的发生.
- python之list [ 列表 ]
1. 列表是什么? list [ ] 逗号隔开 是一个容器 可以存放任意类型 列表 == 书包 书包里可以放水杯.衣服.袜子.钱包 钱包里可以放钱.身份证件,可以包套包 2. 列表能干什么? 存储大量 ...
- 服务器配置iis,php网站
1.在iis中选择物理路径.配置域名 2.添加php默认文档 3.修改处理程序映射 4.设置模块映射信息
- (5)JSTL的xml标签库
Jstl的XML标签库 JSTL提供了操作xml文件的标签库,使用xml标签库可以省去使用Dom和SAX标签库的繁琐,能轻松的读取xml文件的内容. <%@ taglib uri="h ...