通过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 27 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
python实现浪漫的烟花秀
Jan 30 Python
pycharm创建一个python包方法图解
Apr 10 Python
Pytorch实现GoogLeNet的方法
Aug 18 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
django ORM之values和annotate使用详解
May 19 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
Python如何实现Paramiko的二次封装
Jan 30 Python
python实现学生通讯录管理系统
Feb 25 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
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
Python logging设置和logger解析
2019/08/28 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
中职生自我鉴定范文
2013/10/03 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
小学生校园广播稿
2014/09/28 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
八达岭长城导游词
2015/01/30 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
公司会议开幕词
2016/03/03 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis