使用ftplib,轻松实现从ftp服务器上下载所需要的文件,包括目录结构等,支持了一下断点续传

 from ftplib import FTP
import sys
import os
import re def ftpconnet(ftpserver,port,username,password):
ftp = FTP()
try:
ftp.connect(ftpserver,port)
except:
raise IOError,'FTP connect failed!' try:
ftp.login(username,password)
except:
raise IOError,'FTP login failed!'
else:
return ftp def ftpdownload(ftp,ori_path,dest_path):
for each in ftp.nlst(ori_path):
try:
ftp.cwd(each)
except:
filename = re.search('\S+\/(\S+)',each).group(1)
local_file = dest_path + '/' + filename
if os.path.exists(local_file):
lsize = os.stat(local_file).st_size
rsize = ftp.size(each)
if lsize > rsize:
sys.stderr.write('the local file %s is bigger than the remote!\n'%local_file)
return False
elif lsize == rsize:
sys.stderr.write('the file %s has been completed!\n'%local_file)
bufsize = 1024 * 1024
fp = open(local_file,'ab')
ftp.retrbinary('RETR '+each,fp.write,bufsize,rest=lsize)
else:
bufsize = 1024 * 1024
fp = open(local_file,'wb')
ftp.retrbinary('RETR '+each,fp.write,bufsize)
else:
dirname = re.search('\S+\/(\S+)',each).group(1)
dirname = dest_path + '/' + dirname + '/'
os.system('mkdir -p %s'%dirname)
ftpdownload(ftp,each,dirname) def ftpclose(ftp):
ftp.quit() if __name__ == '__main__':
ftp = ftpconnet('climb.genomics.cn',21,'','')
ftpdownload(ftp,'/pub/10.5524/100001_101000/100145/','./')
ftpclose(ftp)

使用Python批量下载ftp服务器中的内容的更多相关文章

  1. 【数据下载】利用wget命令批量下载ftp文件和文件夹

    这是一个“”数据大发现”的时代,大家都在创造数据,使用数据以及分享数据,首先一步我们就需要从数据库download我们需要的数据. Ftp是一种常见的在线数据库,今天介绍一种可以批量下载文件夹的方法, ...

  2. 用Python批量下载DACC的MODIS数据

    本人初次尝试用Python批量下载DACC的MODIS数据,记下步骤,提醒自己,数据还在下载,成功是否未知,等待结果中...... 若有大佬发现步骤有不对之处,望指出,不胜感激. 1.下载Python ...

  3. 用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同 Current database: pyt ...

  4. 将iPhone5s中的相片批量下载到电脑中

    前言:目前我还在使用iPhone5s这款手机,不过由于自己的无知,在使用手机的过程中发现有些用户的体验不是很好,特别是将手机中的相片批量下载到电脑中这件小事,和Android系统相关的手机相比更不好玩 ...

  5. 检验指定路径的文件是否存在ftp服务器中

    import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.apache. ...

  6. 利用shell脚本将Oracle服务器中数据定时增量刷新到ftp服务器中

    现有需求:将oracle数据库中的数据准实时同步至某ftp服务器中,以便前端应用能定时从ftp服务器目录中取增量数据 方法:将加工脚本写为存储过程,然后利用shell脚本执行该存储过程并将增量数据导出 ...

  7. 获取小众ftp服务器指定目录内容列表

    今天获取小众ftp服务器指定目录内容列表时费劲急了. ///parama url="ftp://x.x.x.x/dir_name" public string GetFTPDir( ...

  8. 用python批量下载图片

    一 写爬虫注意事项 网络上有不少有用的资源, 如果需要合理的用爬虫去爬取资源是合法的,但是注意不要越界,前一阶段有个公司因为一个程序员写了个爬虫,导致公司200多个人被抓,所以先进入正题之前了解下什么 ...

  9. FTP服务器中vsftpd主配置文件解析

    /etc/vsftpd/vsftpd.conf#################匿名权限控制############### anonymous_enable=YES #是否启用匿名用户no_anon_ ...

随机推荐

  1. vue2入门之vue-cli

    vue-cli vue在web前端可谓是大放异彩,尤其在国内与angular.react有三足鼎立之势.很多人想入门vue2而又苦于不知从何下手.因为vue2是以组件化开发的,最好要搭配webpack ...

  2. Java面试题集合(比较实用)

    1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用...... ...

  3. 闲来无事研究一下酷狗缓存文件kgtemp的加密方式

    此贴为本人原创,转载请注明出处 序 前几天更新了被打入冷宫很久的酷狗,等进入之后就感觉菊花一紧----试 听 居 然 都 要 开 通 音 乐 包(高品和无损)才行了,WTF! 这意味着以前缓存的都听不 ...

  4. VisualStudio程序运行后控制台窗口一闪就没了

    这个虽然是千查万查出来的,但也不是原创的.希望对大家有所帮助. 方案一:网上最常见的解决方案是,在程序结尾的 return 0; 之前加 system("pause") 或 get ...

  5. ArrayList与数组间的转换

    关键句:String[] array = (String[])list.toArray(new String[size]); public class Test { public static voi ...

  6. 以pfile或者spfile启动时show parameter pfile的不同结果

    普通启动: SQL> show parameter pfile NAME TYPE VALUE ------------------------------------ ----------- ...

  7. TableML Excel编译/解析工具

    TableML TableML, Table Markup Language, 基于电子表格的标记语言, 类似JSON, XML, INI,TableML可以作为软件项目的配置标记语言, 与之不同的是 ...

  8. mysql+mybatis递归调用

    递归调用的应用场景常常出现在多级嵌套的情况,比如树形的菜单.下面通过一个简单的例子来实现mysql+mybatis的递归. 数据模型 private Integer categoryId; priva ...

  9. java语言实现树

    首先用Node类定义一个节点,用来存储每个节点的内容: public class Node { // 关键字 private int keyData; // 其他数据 private int othe ...

  10. mysql还原数据库时,提示ERROR 1046 (3D000) No database selected 的解决方法

    使用mysql数据库的朋友, 经常会使用mysqldump备案数据库, 然后到新服务器还原, 这个过程中, 有朋友会遇到ERROR 1046 (3D000)  No database selected ...