《hadoop權威指南》的天氣資料可以在ftp://ftp3.ncdc.noaa.gov/pub/data/noaa下載,在網上看到這個資料好開心,開啟ftp發現個問題,呀呀,這麼多檔案啊,我一個個去點另存新檔,得點到啥時候啊,迅雷應該有批量下載,只是我沒找到,估計是我瀏覽器把迅雷禁掉了,乾脆自己用python寫一個實現下載好了,網上早了一下,發現很簡單啊
#!/usr/bin/python#-*- coding: utf-8 -*-from ftplib import FTPdef 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/" year=1911 while year<=1930: path=datapath+str(year) li = ftp.nlst(path) for eachFile in li: localpaths = eachFile.split("/") localpath = localpaths[len(localpaths)-1] localpath='weatherdata/'+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()