NCCC気象データのダウンロード方法

2032 ワード


Hadoop権威ガイドでは、NCCC気象データをダウンロードする必要があります.ダウンロード先は次のとおりです.
ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/
isd-lite/
しかし、私たちが開いた後、すべてのファイルは.gzフォーマットは多く、ダウンロードを1つずつ保存することはできません.
pythonで作成した一括ダウンロードデータファイルのコードを以下に示します.
#!/usr/bin/python
#-*- coding: utf-8 -*-

import sys
import os
from 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 weatherdata
python.exe//pythonインストール後のファイル
ncdc_download.py//上記コードファイル
1901//ダウンロード開始年
2014//ダウンロード年まで
weatherdata//指定したダウンロードディレクトリ(手動で自分で作成する)