您的位置:首页 > 其它

如何下载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 //指定的下载目录(要手动自己创建)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: