通过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实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
Python标准库之Sys模块使用详解
May 23 Python
Python中if __name__ == '__main__'作用解析
Jun 29 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 Python
django实现用户登陆功能详解
Dec 11 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
python elasticsearch从创建索引到写入数据的全过程
Aug 04 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 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
zend framework多模块多布局配置
2011/02/26 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP递归创建多级目录
2015/11/05 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
解决Python requests 报错方法集锦
2017/03/19 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
解决python运行效率不高的问题
2020/07/20 Python
Python中常用的os操作汇总
2020/11/05 Python
python 实现IP子网计算
2021/02/18 Python
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
土木工程专业个人求职信
2013/12/05 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
教师见习总结范文
2015/06/23 职场文书
领导视察通讯稿
2015/07/18 职场文书