基于perl从ncbi的ftp站点下载文件
Posted 生信窗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于perl从ncbi的ftp站点下载文件相关的知识,希望对你有一定的参考价值。
从ncbi的ftp站点下载文件,数量不多的话,一个个点击也是可以完成的,实在不行,linux的wget命令也是可以的,只是需要自己写程序需要设置一些log或者warning信息,毕竟文件太大了,如果中断没有任何提示,可能个人都不知道是哪里出问题了;
无论你再怎么推崇python,perl在生物信息领域依然有着不可替代的作用,都说python的第三方库很强大,其实perl 的cpan一样很强大,我们本篇就利用perl来实现自动下载;
首先我们找到ncbi 的ftp站点,谷歌直接搜索ncbi ftp ;
但是你会发现如下图一样打不开,谷歌貌似对于ftp的支持逐渐取消了,没有关系;
把ftp替换为http就好了;下面这张图就是ncbi的ftp了,所有的文件随便下载,不得不佩服,这么多信息免费使用;
我们打开1000genomes,看到此文件夹下面含有以下信息;我们就测试一下,下载两个pdf文件,
接着我们去perl 的cpan搜索一下ftp试试,毕竟你得遵从ftp协议才能下载,所以直接利用ftp关键字搜索;找到一个Net::FTP包,完美支持ftp协议,而且每一步都有错误捕获处理;接下来就是写代码了;直接给出代码;
#!/usr/bin/env perl
use warnings;
use strict;
use Net::FTP;
#------------------------------------------------------------------------
my $host = "ftp.ncbi.nlm.nih.gov";#NCBI ftp
my $ftp = Net::FTP->new($host,Timeout=>240,Debug => 0) or die "Cannot connect to : $@";#创建ftp对象
$ftp->login("anonymous",'-anonymous@') or die "Cannot login ", $ftp->message;#登录ftp
$ftp->cwd("/1000genomes/") or die "Cannot change working directory ", $ftp->message;#进入1000genomes目录
my @tmp = $ftp->ls();#获取1000genomes目录列表
do {$_ =~ /pdf$/ and $ftp->get($_)} foreach @tmp;#下载两个pdf文件
$ftp->quit;#退出
exit;#退出程序
每行都有注释,就不讲了;然后我们在自己的linux运行一下:
./getFileFromNcbiFtp.pl
两个pdf文件就下载到我们的电脑上了,简单方便;
以上是关于基于perl从ncbi的ftp站点下载文件的主要内容,如果未能解决你的问题,请参考以下文章
怎么从从ncbi的ftp上下了windows的本地blast