1. 通过python的ftplib批量下载ensembl中指定类型的文件,并且同一个物种的文件保存在一个文件夹中
  2. 经常碰到没下载完就停止,遇到这种情况可再次执行脚本,之前下载的文件不会被覆盖。如再次执行,log和summary文件会有点问题,不过不影响下载
    --------------------------------------------------------------------------------------------
    2021-03-25更新,增加下载gff3和gtf的功能
#!/usr/bin/python
import ftplib
import osHOST='ftp.ensemblgenomes.org'def mkdir(path):dir=os.path.exists(path)if not dir:os.makedirs(path)def get_cdna_cds_pep():feature_lst=['cdna','cds','pep']DIRN='/pub/release-50/plants/fasta'logFile=open('download.log','a')###链接主机,定义端口###try:ftp=ftplib.FTP(HOST)   except ftplib.error_perm:logFile.write("Can not contect %s\n" %HOST)returnlogFile.write("Connect %s successfully\n"%HOST)###匿名登陆 f.login()###try:ftp.login() except ftplib.error_perm:logFile.write("Fail to login\n")ftp.quit()returnlogFile.write("Login successfully\n")###获取下载文件###species_lst=ftp.nlst(DIRN)for species in species_lst: #遍历每个物种的文件夹speciesName=species.split("/")[-1]mkdir(speciesName)for feature in feature_lst: #遍历每个物种文件夹中的pep, cdna, cds文件夹path=species+"/"+featurefor file in ftp.nlst(path):outFilename=file.split("/")[-1]if 'fa.gz' in file and os.path.exists(outFilename) is False:with open(speciesName+"/"+outFilename, 'wb') as outfile:ftp.retrbinary('RETR %s' % file, outfile.write)logFile.write("file %s is dowloaded successfully\n" %outFilename)logFile.close()def get_gff_gtf():feature_lst=['gff3','gtf']DIRN='/pub/release-50/plants/'logFile=open('download.log','a')###链接主机,定义端口###try:ftp=ftplib.FTP(HOST)   except ftplib.error_perm:logFile.write("Can not contect %s\n" %HOST)returnlogFile.write("Connect %s successfully\n"%HOST)###匿名登陆 f.login()###try:ftp.login() except ftplib.error_perm:logFile.write("Fail to login\n")ftp.quit()returnlogFile.write("Login successfully\n")###获取下载文件###for feature in feature_lst:suffix="50."+feature+".gz" #下载文件后缀species_lst=ftp.nlst(DIRN+feature)for species in species_lst: #遍历每个物种的文件夹speciesName=species.split("/")[-1]mkdir(speciesName)for file in ftp.nlst(species):outFilename=file.split("/")[-1]if suffix in file and os.path.exists(outFilename) is False:with open(speciesName+"/"+outFilename, 'wb') as outfile:ftp.retrbinary('RETR %s' % file, outfile.write)logFile.write("file %s is dowloaded successfully\n" %outFilename)logFile.close()if __name__ == '__main__':#get_cdna_cds_pep()get_gff_gtf()

使用python批量下载ensembl数据库指定类型的文件相关推荐

  1. python怎么批量下载年报_使用Python批量下载Wind数据库中的PDF报告

    原标题:使用Python批量下载Wind数据库中的PDF报告 背景 最近小编出于工作需要,准备在Wind金融数据终端批量下载上市公司2019年第一季度业绩预告.通过相关的条件检索,发现其相关数据有近百 ...

  2. 使用python批量下载需要的分子的SDF文件

    使用python批量下载需要的分子的SDF文件 这里需要借助python的第三方库pubchempy (可以使用pip安装:pip install pubchempy) 首先定义文件的路径(这里的文件 ...

  3. 群里又会python的吗_自从会了Python在群里斗图就没输过,Python批量下载表情包!...

    原标题:自从会了Python在群里斗图就没输过,Python批量下载表情包! 导语 最近图慌,于是随便写了个表情包批量下载的脚本,没什么技术含量,纯娱乐性质. 让我们愉快地开始吧~ 开发工具 Pyth ...

  4. 教你怎么使用python批量下载图片

    教你怎么使用python批量下载图片 文章目录 教你怎么使用python批量下载图片 前言 一.运行环境 1. win10 2. python==3.7.2 二.需要用到的参数 1. download ...

  5. 使用Python批量下载哨兵一号(sentinel-1)的精密轨道数据(precise orbit data)

    使用Python批量下载哨兵一号(sentinel-1)的精密轨道数据 1. 安装Python及data_downloader包 2. 下载精密轨道数据与辅助数据 1. 安装Python及data_d ...

  6. 利用python 批量下载美拍视频

    前些日子写了一个利用Python批量下载微博配图的程序,因为是基于微博的移动端,即weibo.cn  ,难度要小很多.而当我面对美拍时却发现,好像有点困难啊. 美拍的页面有很多动态元素,当我们打开某一 ...

  7. 利用python批量下载美拍视频

    前些日子写了一个利用python批量下载微博配图的程序,因为是基于微博的移动端,即weibo.cn  ,难度要小很多.而当我面对美拍时却发现,好像有点困难啊. 美拍的页面有很多动态元素,当我们打开某一 ...

  8. python下载网页里面所有的图片-Python批量下载网页图片详细教程

    很多朋友在网上查找批量下载图片的方法~发觉挺凌乱的,无从下手.这里绿茶小编就来跟大家分享下使用Python批量下载图片方法. 目标:爬取某个网站上n多页的链接,每个链接有n多张图片,每一页对应一个文件 ...

  9. python批量下载b站_python 批量下载bilibili视频的gui程序

    运行效果: 完整代码: # !/usr/bin/python # -*- coding:utf-8 -*- # time: 2019/07/02--08:12 __author__ = 'Henry' ...

  10. Python 批量下载SIGMOD,VLDB的论文 Mac OS

    这里写自定义目录标题 Python 批量下载SIGMOD,VLDB的论文 Mac OS 实现 0.要爬取的网站 1.下载单篇论文 2.获得所有论文的链接 完整代码 Python 批量下载SIGMOD, ...

最新文章

  1. 拨号连接或 ××× 连接的错误代码列表
  2. css3制作左右拉伸动画菜单
  3. Window2008R2安装Telnet客户端
  4. php allowoverride,Apache之AllowOverride参数详解
  5. Bzoj4503 两个串
  6. HDU - 2457 DNA repair(AC自动机+dp)
  7. 《四世同堂》金句摘抄(五)
  8. powerdesigner2
  9. 检测浏览器是否支持WebSocket
  10. 简单几何(圆与多边形公共面积) UVALive 7072 Signal Interference (14广州D)
  11. Redis的哨兵(sentinel)模式
  12. 【Linux 命令学习第二天】
  13. 电商后台管理系统项目介绍和项目初始化
  14. 【wpa_supplicant】 初始化
  15. SQL查询结果根据汉字拼音排序
  16. 论文后面的参考文献格式应该如何写
  17. Centos6.7安装VBoxLinuxAdditions
  18. coldfusion_ColdFusion中的一周:1月30日至2月5日:一切
  19. SAP批次号生成时,最后两位顺序号超过了99,需要和字母和数字组合生成新的批次号
  20. 墨子号量子计算机原型时间,【科技日报】“墨子号”首次实现量子安全时间传递...

热门文章

  1. long tail(长尾理论)
  2. 希尔伯特的23个问题
  3. thinkphp5.1接入银联支付
  4. 关于技术人员创业入股的问题
  5. 【shell】shell是什么,shell脚本又是什么?
  6. JAVA输入任意一个数,判断是否是回文数
  7. 表空间脚本[置顶] Oracle 数据库表空间容量调整(表空间缩容脚本)脚本
  8. 基于android7.1+msm8937充电学习---概述(1)
  9. MySql报1205:1205 - Lock wait timeout exceeded; try restarting transaction,出现1205如何解决
  10. 修改idea的头部文档注释信息