资源简介
python实现的,借鉴的网上的代码,但修改并测试通过了。函数已经包装好。修改修改可用于各种场合。
代码片段和文件信息
#!/usr/bin/python
#coding=gbk
‘‘‘
ftp自动下载、自动上传脚本,可以递归目录操作
‘‘‘
from ftplib import FTP
import ossysstringdatetimetime
import socket
class MYFTP:
def __init__(self hostaddr username password remotedir port=21):
self.hostaddr = hostaddr
self.username = username
self.password = password
self.remotedir = remotedir
self.port = port
self.ftp = FTP()
self.file_list = []
# self.ftp.set_debuglevel(2)
def __del__(self):
self.ftp.close()
# self.ftp.set_debuglevel(0)
def login(self):
ftp = self.ftp
try:
timeout = 60
socket.setdefaulttimeout(timeout)
ftp.set_pasv(True)
print ‘开始连接到 %s‘ %(self.hostaddr)
ftp.connect(self.hostaddr self.port)
print ‘成功连接到 %s‘ %(self.hostaddr)
print ‘开始登录到 %s‘ %(self.hostaddr)
ftp.login(self.username self.password)
print ‘成功登录到 %s‘ %(self.hostaddr)
debug_print(ftp.getwelcome())
except Exception:
deal_error(“连接或登录失败“)
try:
ftp.cwd(self.remotedir)
except(Exception):
deal_error(‘切换目录失败‘)
def is_same_size(self localfile remotefile):
try:
remotefile_size = self.ftp.size(remotefile)
except:
remotefile_size = -1
try:
localfile_size = os.path.getsize(localfile)
except:
localfile_size = -1
debug_print(‘lo:%d re:%d‘ %(localfile_size remotefile_size))
if remotefile_size == localfile_size:
return 1
else:
return 0
def download_file(self localfile remotefile):
if self.is_same_size(localfile remotefile):
debug_print(‘%s 文件大小相同,无需下载‘ %localfile)
return
else:
debug_print(‘>>>>>>>>>>>>下载文件 %s ... ...‘ %localfile)
#return
file_handler = open(localfile ‘wb‘)
self.ftp.retrbinary(‘RETR %s‘%(remotefile) file_handler.write)
file_handler.close()
def download_files(self localdir=‘./‘ remotedir=‘./‘):
try:
self.ftp.cwd(remotedir)
except:
debug_print(‘目录%s不存在,继续...‘ %remotedir)
return
if not os.path.isdir(localdir):
os.makedirs(localdir)
debug_print(‘切换至目录 %s‘ %self.ftp.pwd())
self.file_list = []
self.ftp.dir(self.get_file_list)
remotenames = self.file_list
#print(remotenames)
#return
for item in remotenames:
filetype = item[0]
filename = item[1]
local = os.path.join(localdir filename)
if filetype == ‘d‘:
self.download_files(local filename)
elif filetype == ‘-‘:
self.download_file(local filename)
self.ftp.cwd(‘..‘)
debug_print(‘返回上层目录 %s‘ %self.ftp.pwd())
def upload_file(self localfile remotefile):
if not os.path.isfile(localfile):
return
if self.is_same_size(localfile remotefile):
debug_print(‘跳过[相等]: %s‘ %localfile)
return
file_handler = open(localfile ‘rb‘)
self.ftp.storbinary(‘STOR %s‘ %remotefile file_handler)
file_handler.close()
debug_print(‘已传送: %s‘ %localfile)
def upload_files(self localdir=‘./‘ remotedir = ‘./‘):
if not os.path.isdir(localdir):
return
localnames = os.listdir(localdir)
self.ftp.cwd(remotedir)
for item in localnames:
src = os.path.join(localdir item)
if os.pa
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4536 2010-12-08 18:01 autoftp\autoftp.py
文件 0 2010-12-08 18:01 autoftp\log.txt
文件 33 2010-12-08 17:54 autoftp\run.bat
目录 0 2010-12-08 17:58 autoftp
----------- --------- ---------- ----- ----
4569 4
- 上一篇:在大图中查找小图显示位置
- 下一篇:黑白棋(带简单AI)
相关资源
- 用Socket编程实现FTP
- tftp文件传输工具
- linux 网络实验 ftp程序
- 用Socket写的简易FTP服务器和客户端
- 基于C 的简易FTP客户端(带源码)
- Python版的A*寻路算法
- IronPython IDE
- 用IdFTPServer写的一个FTPServer程序
- FTP命令详解.doc
- 一个简单方便的服务端ftp搭建工具
- 20cn的ftp服务器超好用 简洁
- 最好用的FTP服务器
- CuteFTP8.0绿色破解版免安装无需序列号
- PSFTP.EXE 工具
- CuteFTP8.0简体中文破解版
- Wing FTP Server FTP服务器 v6.1.9
- 易语言绵绵FTP网络验证操作模块源码
- pip-10.0.1.tar.gz
- Data Science from Scratch 2nd Edition
- shape_predictor_68_face_landmarks.dat.bz2 68个标
- 爬取豆瓣电影TOP250程序,包含非常详
- 中文维基百科语料库百度网盘网址.
- MSCNN_dehaze.rar
- 爬取豆瓣排行榜电影数据(含GUI界面
- 免费的2014ftp暴力破解扫描工具可自动
- 字典文本资源
- linux c下的ftp客户端和服务器端
- Notepad++ ftp/sftp 插件
- Brainfuck / OoK 解码脚本
- 8uftp安装
评论
共有 条评论