通过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 正则式 概述及常用字符
May 07 Python
Python获取apk文件URL地址实例
Nov 01 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
浅谈Python中的继承
Jun 19 Python
python和opencv构建运动检测器的实现
Mar 03 Python
Python集合的基础操作
Nov 01 Python
Python作用域和名称空间的详细介绍
Apr 13 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
Syphon 使用方法
2021/03/03 冲泡冲煮
PHP学习之PHP表达式
2006/10/09 PHP
php 什么是PEAR?
2009/03/19 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
帝国cms常用标签汇总
2015/07/06 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
php微信开发之图片回复功能
2018/06/14 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
2008/03/22 Javascript
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
JS实现打字游戏
2019/12/17 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
python Socket之客户端和服务端握手详解
2017/09/18 Python
python实现求特征选择的信息增益
2018/12/18 Python
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
英语专业毕业生自荐信
2013/10/28 职场文书
新闻传播专业求职信
2014/07/22 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
聚会通知怎么写
2015/04/23 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis