python 气候_用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()

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)

熟悉Microsoft Azure平台的读者都了解,Azure SQL Database提供不同等级的,跨数据中心的异地冗余 ...

Google数据中心B4网络具体实现

① 背景介绍 Google的网络有两种,一种是数据中心内部网络,另外一种是WAN网,其中WAN网又分为两种:一是数据中心之间的互联网络,属于内部网络(G-Scale Network),另外一种是面向I ...

云计算和大数据时代网络技术揭秘(八)数据中心存储FCoE

数据中心存储演化——FCoE   数据中心三大基础:主机 网络 存储 在云计算推动下,存储基础架构在发生演变 传统存储结构DAS.SAN在发展中遇到了布线复杂.能耗增多的缺点(原生性),需要对架构做根 ...

SDN理解:云数据中心底层网络架构

目录 - 目录 - 云数据中心流量类型 - NSX整体网络结构 - 管理网络(API网络) - 租户网络 - 外联网络 - 存储网络 - openstack整体网络结构 - 管理网络:(上图中蓝线) ...

随机推荐

Id.value与document.getElementById(";Id";).value的区别

如果标签Id在Form表单里面的话,直接Id.value就不能用了,而是要用Form.Id.value来取值或设置值 所以最好用document.getElementById("Id&quo ...

Django之路由、模板和模型系统

一.路由系统 浏览器会自动给url后加一个"/" django会自动给路由的正则表达式前面加一个"/" django会给任何不带"/"结尾的 ...

Netbeans8下 Weblogic EJB案例

1:接口 @Remote public interface XgmZzsNssb {} 2:实现 @Stateless(mappedName="XgmZzsNssbImpl") @ ...

[BZOJ1415]聪聪和可可

Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每 ...

Keras Model Sequential模型接口

Sequential 模型 API 在阅读这片文档前,请先阅读 Keras Sequential 模型指引. Sequential 模型方法 compile compile(optimizer, lo ...

windows开发各种dll缺失

推荐使用 depend这个工具,非常好用 http://www.dependencywalker.com/ 打开对应的文件,就能看到缺失了哪些dll 感谢博主: https://blog.csdn.n ...

Myisam 和 Innodb 区别

MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以 ...

(一)问候MyBatis3

第一节:MyBatis简介 百度百科 第二季:Mybatis版HolleWorld实现 例子: mybatis-config.xml:

DataGridView使用技巧八:设置单元格的ToolTip

ToolTip属性用来设置当鼠标移动到单元格上面时的提示内容. DataGridView.ShowCellToolTips=True的情况下,单元格的ToolTip可以表示出来.对于单元格窄小,无法完 ...

POJ 2182 Lost Cows (求序列第k大)

题解 二分+树状数组 显然最和一个数的值就是rank 那么其它数有什么规律? 从后往前匹配rank,我们可以发现第i个数的rank为还没有匹配的rank第(a[i]+1)大的数 这可以用 树状数组+二 ...

你可能感兴趣的:(python,气候)