通过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 Socket传输文件示例
Jan 16 Python
python3+PyQt5实现拖放功能
Apr 24 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 Python
详解用python生成随机数的几种方法
Aug 04 Python
Python学习笔记之While循环用法分析
Aug 14 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
numpy库reshape用法详解
Apr 19 Python
Python新手学习标准库模块命名
May 29 Python
Python定义一个Actor任务
Jul 29 Python
浅谈Python基础之列表那些事儿
May 11 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 feof用来识别文件末尾字符的方法
2010/08/01 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
Python lambda和Python def区别分析
2014/11/30 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
python删除字符串中指定字符的方法
2018/08/13 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
python的dict判断key是否存在的方法
2020/12/09 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
Linux常见面试题
2013/03/18 面试题
任命书格式
2014/06/05 职场文书
学习党代会心得体会
2014/09/05 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
mysql insert 存在即不插入语法说明
2022/03/25 MySQL