用Python下载美国国家气候数据中心(NCDC)的气候数据
美国国家气候数据中心的官网地址是https://www.ncdc.noaa.gov/
气候数据的下载地址是:
长格式:ftp://ftp.ncdc.noaa.gov/pub/data/noaa/,这种就是《hadoop权威指南》所使用的数据集格式。
短格式:ftp://ftp.ncdc.noaa.gov/pub/data/noaa/isd-lite/
这两个地址是在网上查到的,从官网怎样找到,我没有发现。
浏览器打开这个网址以后,是以年份为目录的目录列表,从1901年开始,一直到今年,2019年。
每个目录里面是形如029070-99999-1901.gz这样的数据,数量不等,年份越晚,文件越多,应当是因为技术越来越发达,数据量也随之增大。
显然,这样的数据是不可能手工下载的,网上也没找到正确的下载地址,写个程序自己下吧。
参考了这篇文档https://blog.csdn.net/LIHUINIHAO/article/details/38315231,做了一些修改。此文档中的地址目前已无效,我将其改为ftp.ncdc.noaa.gov。
在开发环境中运行。
import sys
import os
from ftplib import FTP #服务器链接
def ftpconnect():
ftp_server = "ftp.ncdc.noaa.gov"
usrname = ""
password = ""
ftp = FTP() ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 port=21
time=30
ftp.connect(ftp_server,port,time)
ftp.login(usrname,password) return ftp #开始下载文件
def downloadfile():
ftp = ftpconnect()
#print ftp.getwelcome() #显示ftp服务器欢迎信息
datapath = "/pub/data/noaa/isd-lite/" #起始年份和终止年份,酌情修改
beginyear = 1934
endyear = 1950 # year=int(sys.argv[1]) #年份循环 currentyear = beginyear #当前执行年份 # while year<=int(sys.argv[2]):
while currentyear <= int(endyear):
path = datapath + str(currentyear) ftp.cwd('/pub/data/noaa/isd-lite/' + str(currentyear)) # li = ftp.nlst(path) #创建指定年份的目录
# path = sys.argv[3]+'/'
path = "weatherdata" + '/' dir = str(currentyear)
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(currentyear) + '--'+localpath#把日期放在最前面,方便排序
localpath=new_path + '/' + localpath #不必用日期排序,第一节是流水号,已自带排序功能
bufsize = 1024 #设置缓冲块大小
fp = open(localpath,'wb') #以写模式在本地打开文件
ftp.retrbinary('RETR ' + eachFile,fp.write,bufsize) #接收服务器上文件并写入本地文件
currentyear = currentyear+1
ftp.set_debuglevel(0) #关闭调试
# fp.close()
ftp.quit() #退出ftp服务器 if __name__=="__main__":
downloadfile()
用Python下载美国国家气候数据中心(NCDC)的气候数据的更多相关文章
- Alibaba Cluster Data 开放下载:270GB 数据揭秘你不知道的阿里巴巴数据中心
打开一篇篇 IT 技术文章,你总能够看到“大规模”.“海量请求”这些字眼.如今,这些功能强大的互联网应用,都运行在大规模数据中心上,然而,对于大规模数据中心,你又了解多少呢?实际上,除了阅读一些科技文 ...
- 5G到来,数据中心如何变革?
导读 5G将要到来,除改变人们的工作生活外,其带宽.延时.连接特性也逼迫着数据中心变革,以满足5G时代需求.具体而言,5G将从形状规模.硬件组成及软件规模三面变革数据中心. 5G带来什么 高带宽.低延 ...
- 转-Uptime与数据中心等级认证
1 数据中心等级认证 随着数据中心的蓬勃发展,越来越多的标准被制定出具.其中,Uptime Tier认证在业内是认同度最高的标准.以前,Uptime在中国的宣传很少,很多人对Uptime及其认证体系不 ...
- Alibaba Cluster Data 开源:270GB 数据揭秘你不知道的阿里巴巴数据中心
打开一篇篇 IT 技术文章,你总能够看到“大规模”.“海量请求”这些字眼.如今,这些功能强大的互联网应用,都运行在大规模数据中心上,然而,对于大规模数据中心,你又了解多少呢?实际上,除了阅读一些科技文 ...
- 透过微软研究院在“数据中心网络”的重大进展看SIGCOMM 2013
2013" title="透过微软研究院在"数据中心网络"的重大进展看SIGCOMM 2013"> 编者按:于8月12日至16日在香港举行的SI ...
- SQL Azure (17) SQL Azure V12 - 跨数据中心标准地域复制(Standard Geo-Replication)
<Windows Azure Platform 系列文章目录> 熟悉Microsoft Azure平台的读者都了解,Azure SQL Database提供不同等级的,跨数据中心的异地冗余 ...
- Google数据中心B4网络具体实现
① 背景介绍 Google的网络有两种,一种是数据中心内部网络,另外一种是WAN网,其中WAN网又分为两种:一是数据中心之间的互联网络,属于内部网络(G-Scale Network),另外一种是面向I ...
- 云计算和大数据时代网络技术揭秘(八)数据中心存储FCoE
数据中心存储演化——FCoE 数据中心三大基础:主机 网络 存储 在云计算推动下,存储基础架构在发生演变 传统存储结构DAS.SAN在发展中遇到了布线复杂.能耗增多的缺点(原生性),需要对架构做根 ...
- SDN理解:云数据中心底层网络架构
目录 - 目录 - 云数据中心流量类型 - NSX整体网络结构 - 管理网络(API网络) - 租户网络 - 外联网络 - 存储网络 - openstack整体网络结构 - 管理网络:(上图中蓝线) ...
随机推荐
- 通过jarjar.jar来替换jar包名的详细介绍
有时候我们根据一些场景 需要替换第三方jar包的包名,比如Android广告平台sdk,更换他们jar包包名的话,可以防止市场检测到有广告插件,所以,今天就介绍一下如何使用jarjar.jar工具来替 ...
- iOS 一些常见问题的整理
一.通知 对于通知,大家想必都不陌生,它是一个单例,允许当事件发生时通知一些对象,让我们在低程度耦合的情况下,来达到通信的目的. 通知的优势:1.不需要编写太多代码,实现比较简单2.对于一个发出的通知 ...
- Chrome F12 温故而知新 :因为重定向导致清空Network信息
虽然我以前都是用Fiddler 4来作为解决方案.但实际上可以勾选 [Preserve log]来保存日志 这样就不担心因为页面重定向导致清空了日志了
- Spark 准备篇-环境搭建
本章内容: 待整理 参考文献: 学习Spark——环境搭建(Mac版) <深入理解SPARK:核心思想与源码分析>(前言及第1章) 搭建Spark源码研读和代码调试的开发环境 Readin ...
- JAVA代码实现多级树结构封装对象
树结构在开发中经常遇到.例如:部门.菜单.员工架构等等.下面用部门作为例子构造部门结构树 1.部门表:dept -- ---------------------------- -- Table str ...
- 基于jQuery+HTML5加入购物车代码
基于jQuery+HTML5加入购物车代码.这是一款基于jquery+html5实现的支持累加计价的网站购物车代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div ...
- 关于Unity中NGUI的Pivot和锚点
Pivot 1.创建一个Sprite类型的Sprite1节点,关联一个图集和一张贴图,用图中的六个按钮调整这个贴图的Pivot点,一共有八个点可以选择 2.再创建一个Sprite类型的Sprite2节 ...
- rqalpha探究 1 setup.py
rqalpha是难得几个好的做量化交易的开源项目,不过由于自己python用的实在不多,看起来还是觉得很复杂. 因此准备抽取出框架,从最简单的搭建. 思路 从setup着手,看一下如何建立一个发布工程 ...
- ubuntu14.04 中virtual box 加入 usb
参考两篇文章: 1.http://www.cnblogs.com/ericsun/archive/2013/06/10/3130679.html 2.http://www.360doc.com/con ...
- tmux常用配置
首先创建配置文件 $ touch ~/.tmux.conf 一,鼠标支持 对于version 2.1 (18 October 2015)之后的版本,编辑配置文件.tmux.conf, 保存即可. se ...