通过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实现删除Android工程中的冗余字符串
Jan 19 Python
浅谈function(函数)中的动态参数
Apr 30 Python
python实现扫描日志关键字的示例
Apr 28 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
java关于string最常出现的面试题整理
Jan 18 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 23 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 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下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
判断浏览器的javascript版本的代码
2010/09/03 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
python概率计算器实例分析
2015/03/25 Python
Python字符串处理实例详解
2017/05/18 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
Python面向对象之Web静态服务器
2019/09/03 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
python简单实现9宫格图片实例
2020/09/03 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
一套软件测试笔试题
2014/07/25 面试题
财务简历的自我评价
2014/03/05 职场文书
家长写给孩子的评语
2014/04/18 职场文书
银行客户经理岗位职责
2015/04/09 职场文书