如何下载NCDC气象数据
2014-07-31 13:00
302 查看
Hadoop 权威指南中需要下载NCDC气象数据,下载地址为: ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/isd-lite/但是,我们打开后所有的文件都是.gz格式,而且很多,我们不可能一个一个的去保存下载,以下为使用python编写的批量下载数据文件的代码
#!/usr/bin/python#-*- coding: utf-8 -*-import sysimport osfrom ftplib import FTP#ftp 服务器链接def ftpconnect(): ftp_server = 'ftp3.ncdc.noaa.gov' username = '' password = '' ftp=FTP() ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 ftp.connect(ftp_server,21) #连接 ftp.login(username,password) #登录,如果匿名登录则用空串代替即可 return ftp#开始下载文件def downloadfile(): ftp = ftpconnect() #print ftp.getwelcome() #显示ftp服务器欢迎信息 datapath = "/pub/data/noaa/isd-lite/" year=int(sys.argv[1]) #年份循环 currentyear = year #当前执行年份 while year<=int(sys.argv[2]): path=datapath+str(year) li = ftp.nlst(path) #创建指定年份的目录 path = sys.argv[3]+'/' dir = str(year) new_path = os.path.join(path, dir) if not os.path.isdir(new_path): os.makedirs(new_path) for eachFile in li: localpaths = eachFile.split("/") localpath = localpaths[len(localpaths)-1] localpath=new_path + '/'+ str(year) + '--'+localpath#把日期放在最前面,方便排序 bufsize = 1024 #设置缓冲块大小 fp = open(localpath,'wb') #以写模式在本地打开文件 ftp.retrbinary('RETR ' + eachFile,fp.write,bufsize) #接收服务器上文件并写入本地文件 year=year+1 ftp.set_debuglevel(0) #关闭调试 fp.close() ftp.quit() #退出ftp服务器if __name__=="__main__": downloadfile()将上述代码保存到为.py文件cmd下运行 py文件,上述代码接收输入参数运行命令为:python.exe ncdc_download.py 1901 2014 weatherdatapython.exe //python 安装后文件ncdc_download.py //上述代码文件1901 //起始下载年份2014 //截止下载年份weatherdata //指定的下载目录(要手动自己创建)
相关文章推荐
- 如何从美国data.gov网站上下载气象数据(数据来源NOAA)
- 如何实现对上下文(Context)数据的统一管理 [提供源代码下载]
- 在ATSC标准中如何通过VCT表来通知(Signalling)码流中存在数据下载
- 气象数据下载
- 怎样下载美国气象数据用于hadoop实验
- hadoop ncdc数据下载方法
- (原创)如何把数据放到web不能访问的文件夹中并给用户下载?
- Aspose Cells如何进行数据验证(后附下载地址)
- 关于如何将下载的json数据转换为utf-8格式
- NCDC数据下载shell脚本
- hadoop权威指南中的ncdc数据下载地址及命令
- 【转】全球各国矢量数据和气象数据下载(转)
- hadoop权威指南中的ncdc数据下载地址及命令
- hadoop ncdc数据下载方法
- 如何把数据以Excel文档下载
- hadoop权威指南--NCDC1929-2011数据下载地址
- 一起谈.NET技术,如何实现对上下文(Context)数据的统一管理 [提供源代码下载]
- hadoop权威指南中的ncdc数据下载地址
- 如何解决“文件上传返回JSON数据,在IE下提示下载文件”的问题?