通过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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
Python中无限元素列表的实现方法
Aug 18 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
python与C互相调用的方法详解
Jul 14 Python
在cmd中查看python的安装路径方法
Jul 03 Python
python 读取数据库并绘图的实例
Dec 03 Python
解决django接口无法通过ip进行访问的问题
Mar 27 Python
django为Form生成的label标签添加class方式
May 20 Python
浅析Python 条件控制语句
Jul 15 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
Jul 28 Python
Python实现疫情地图可视化
Feb 05 Python
Python面向对象之内置函数相关知识总结
Jun 24 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微框架Dispatch简介
2014/06/12 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
php制作简单模版引擎
2016/04/07 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jquery图片切换插件
2015/03/16 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
jquery replace方法去空格
2017/05/08 jQuery
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
VUE重点问题总结
2018/03/19 Javascript
vue写一个组件
2018/04/09 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
python3操作mysql数据库的方法
2017/06/23 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
Python 代码调试技巧示例代码
2020/08/11 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
jupyter 添加不同内核的操作
2021/02/06 Python
室内拓展活动方案
2014/02/13 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
高一军训决心书
2015/02/05 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
建议书的格式及范文
2015/09/14 职场文书
入党心得体会
2019/06/20 职场文书
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL