博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ftplib 实例
阅读量:6107 次
发布时间:2019-06-21

本文共 2842 字,大约阅读时间需要 9 分钟。

#!/usr/bin/env pythonimport ftplibimport osclass FTPSync(object):    def __init__(self,host,username, password, ftp_base_dir,                            local_base_dir, delete=False):        self.host = host        self.username = username        self.password = password        self.ftp_base_dir = ftp_base_dir        self.local_base_dir = local_base_dir        self.delete = delete        self.conn = ftplib.FTP(host, username, password)        self.conn.cwd(ftp_base_dir)        try:            os.makedirs(local_base_dir)        except OSError:            pass        os.chdir(local_base_dir)    def get_dirs_files(self):        dir_res = []        self.conn.dir('.', dir_res.append)        for f in dir_res:            print f        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()            if False:                print self.delete                print "Deleting",f                self.conn.delete(f)        for d in dirs:            os.chdir(local_curr_dir)            self.conn.cwd(ftp_curr_dir)            self.walk(d)    def run(self):        self.walk('.')if __name__ == '__main__':    from optparse import OptionParser    parser = OptionParser()    parser.add_option("-o","--host", dest="host",            action='store', help ="FTP host")    parser.add_option("-u","--username",dest="username",            action ='store', help = "FTP username")    parser.add_option("-p","--password",dest="password",            action = 'store', help = "FTP password")    parser.add_option("-r","--remote_dir",dest = "remote_dir",            action = 'store', help = "FTP remote starting directory")    parser.add_option("-l", "--local_dir",dest = "local_dir",            action = 'store', help = "Local starting directory")    parser.add_option("-d", "--delete",dest = "delete",default = False,            action = 'store_true', help= "use regex parser")    (options, args) = parser.parse_args()    f = FTPSync(options.host, options.username, options.password,options.remote_dir, options.local_dir, options.delete)    f.run() 在命令行输入:

./ftpimage.py -o localhost -u hzhida -p password -r lighttpd-1.4.31 -l python -d False

 

转载地址:http://cbhza.baihongyu.com/

你可能感兴趣的文章
JetBrains在CLion的Linux和OS X版本中引入Swift支持
查看>>
当编程语言掌握在企业手中,是生机还是危机?
查看>>
为什么BDD可以拯救敏捷
查看>>
64位的Mac OS X也有Windows.Forms了
查看>>
Kayenta:来自Netflix和Google的开源金丝雀分析工具
查看>>
如何使用敏捷开发来赢得太阳能竞速赛
查看>>
SOA和微服务之间的区别
查看>>
一个“Internal”牵扯出的代码泄露,阿里云独家回应
查看>>
多重影分身:一套代码如何生成多个小程序?
查看>>
我们常常意识不到问题的存在,直到有人解决了这些问题
查看>>
Siemens Healthineers在teamplay使用持续交付
查看>>
微服务开源项目ServiceComb 毕业成为Apache顶级项目
查看>>
Chrome和Firefox即将开始在不安全的网站显示警告信息
查看>>
Kappa: 简化AWS Lambda部署
查看>>
InfoQ趋势报告:DevOps 和云计算
查看>>
基于Gitflow分支模型自动化Java项目工作流
查看>>
HTML5游戏引擎Egret发布2.0版 开发工具亦获更新
查看>>
如何防范XSS和CSRF?
查看>>
Monkey测试的策略和分析
查看>>
又拍云张聪谈安全、HTTPS、自定义、CDN的未来趋势
查看>>