通过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 21 Python
Python 逐行分割大txt文件的方法
Oct 10 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
python获取array中指定元素的示例
Nov 26 Python
python实现处理mysql结果输出方式
Apr 09 Python
Jupyter Notebook的连接密码 token查询方式
Apr 21 Python
python中Mako库实例用法
Dec 31 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 Python
python_tkinter事件类型详情
Mar 20 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
全文搜索和替换
2006/10/09 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
JavaScript手机振动API
2016/06/11 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
Python下Fabric的简单部署方法
2015/07/14 Python
使用python实现接口的方法
2017/07/07 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
会计学个人自荐信模板
2013/12/13 职场文书
晨会主持词
2014/03/17 职场文书
降消项目实施方案
2014/03/30 职场文书
委托证明书
2014/09/17 职场文书
公司收款委托书范本
2014/09/20 职场文书
担保书格式范文
2015/09/22 职场文书