通过python下载FTP上的文件夹的实现代码


Posted in Python onFebruary 10, 2013
# -*- encoding: utf8 -*-
import os
import sys
import ftplib
class FTPSync(object):
    def __init__(self):
        self.conn = ftplib.FTP('10.22.33.46', 'user', 'pass')
        self.conn.cwd('/')        # 远端FTP目录
        os.chdir('/data/')        # 本地下载目录
    def get_dirs_files(self):
        u''' 得到当前目录和文件, 放入dir_res列表 '''
        dir_res = []
        self.conn.dir('.', dir_res.append)
        files = [f.split(None, 8)[-1] for f in dir_res if f.startswith('-')]
        dirs = [f.split(None, 8)[-1] for f in dir_res if f.startswith('d')]
        return (files, dirs)
    def walk(self, next_dir):
        print 'Walking to', next_dir
        self.conn.cwd(next_dir)
        try:
            os.mkdir(next_dir)
        except OSError:
            pass
        os.chdir(next_dir)
        ftp_curr_dir = self.conn.pwd()
        local_curr_dir = os.getcwd()
        files, dirs = self.get_dirs_files()
        print "FILES: ", files
        print "DIRS: ", dirs
        for f in files:
            print next_dir, ':', f
            outf = open(f, 'wb')
            try:
                self.conn.retrbinary('RETR %s' % f, outf.write)
            finally:
                outf.close()
        for d in dirs:
            os.chdir(local_curr_dir)
            self.conn.cwd(ftp_curr_dir)
            self.walk(d)
    def run(self):
        self.walk('.')
def main():
    f = FTPSync()
    f.run()
if __name__ == '__main__':
    main()
Python 相关文章推荐
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 Python
Python 经典面试题 21 道【不可错过】
Sep 21 Python
selenium3+python3环境搭建教程图解
Dec 07 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
在python中修改.properties文件的操作
Apr 08 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
python print 格式化输出,动态指定长度的实现
Apr 12 Python
用python实现名片管理系统
Jun 18 Python
python 离散点图画法的实现
Apr 01 Python
打开电脑上的QQ的python代码
Feb 10 #Python
使用python实现baidu hi自动登录的代码
Feb 10 #Python
python判断端口是否打开的实现代码
Feb 10 #Python
python登录QQ邮箱发信的实现代码
Feb 10 #Python
可用于监控 mysql Master Slave 状态的python代码
Feb 10 #Python
python 从远程服务器下载东西的代码
Feb 10 #Python
Python内置的字符串处理函数整理
Jan 29 #Python
You might like
谨慎使用PHP的引用原因分析
2012/09/06 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
HTML5附件拖拽上传drop & google.gears实现代码
2011/04/28 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
浅谈JavaScript字符串拼接
2015/06/25 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
详解webpack-dev-server使用方法
2018/09/14 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Python管理Windows服务小脚本
2018/03/12 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
python deque模块简单使用代码实例
2020/03/12 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
十八届三中全会感言
2014/03/10 职场文书
英语分层教学实施方案
2014/06/15 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
付款证明格式范文
2015/06/19 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书