通过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下函数参数的传递(参数带星号的说明)
Sep 19 Python
Python中生成器和yield语句的用法详解
Apr 17 Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
深入探究Django中的Session与Cookie
Jul 30 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
Python内置random模块生成随机数的方法
May 31 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
python实现控制COM口的示例
Jul 03 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
Python多线程thread及模块使用实例
Apr 28 Python
Python实现排序方法常见的四种
Jul 15 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和ACCESS写聊天室(一)
2006/10/09 PHP
PHP 第一节 php简介
2012/04/28 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
JavaScript中的比较操作符>、=、
2014/12/31 Javascript
js电话号码验证方法
2015/09/28 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
vue+iview实现文件上传
2020/11/17 Vue.js
python实现二叉树的遍历
2017/12/11 Python
python实现决策树
2017/12/21 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
django model通过字典更新数据实例
2020/04/01 Python
创建省级文明单位实施方案
2014/02/27 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
总结表彰大会主持词
2014/03/26 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
试用期自我评价范文
2015/03/10 职场文书
公司酒会致辞
2015/07/30 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
使用Python获取字典键对应值的方法
2022/04/26 Python