利用Python+IDM批量下载ERA5产品

本次主要借助Python+IDM来实现批量下载ERA5产品《ERA5 monthly averaged data on single levels from 1940 to present》中的“Surface solar radiation downwards“要素。

import cdsapi
import calendar
from subprocess import call
import requests
requests.DEFAULT_RETRIES = 5  # 增加重试连接次数(这个是额外加的要不然会出错“max retries exceeded with url”)
s = requests.session()
s.keep_alive = False  # 关闭多余连接
def idmDownloader(task_url, folder_path, file_name):
    """
    IDM下载器
    :param task_url: 下载任务地址
    :param folder_path: 存放文件夹
    :param file_name: 文件名
    :return:
    """
    # IDM安装目录
    idm_engine = "E:\\无限试用插件\\Internet Download Manager_v6_38\\IDMan.exe"
    # 将任务添加至队列
    call([idm_engine, '/d', task_url, '/p', folder_path, '/f', file_name, '/a'])
    # 开始任务队列
    call([idm_engine, '/s'])

if __name__ == '__main__':
    c = cdsapi.Client()
    dic = {
        'product_type':'monthly_averaged_reanalysis',
        'format':'netcdf',
        'variable': 'surface_solar_radiation_downwards',
        'year':'',
        'month':'',
        'time': '00:00',
    }

    # 通过循环批量下载1979年到2020年所有月份数据
    for y in range(1995, 2020):  # 遍历年
        for m in range(1, 13):  # 遍历月
            day_num = calendar.monthrange(y, m)[1]  # 根据年月,获取当月日数
            # 将年、月、日更新至字典中
            dic['year'] = str(y)
            dic['month'] = str(m).zfill(2)
            dic['day'] = [str(d).zfill(2) for d in range(1, day_num + 1)]


            r = c.retrieve('reanalysis-era5-single-levels-monthly-means', dic, )  # 文件下载器
            url = r.location  # 获取文件下载地址
            path = 'H:\\Graduatu student\\nc'  # 存放文件夹
            filename = str(y) + str(m).zfill(2) + '.nc'  # 文件名
            idmDownloader(url, path, filename)  # 添加进IDM中下载

参考博文:

https://blog.csdn.net/lb245557472/article/details/80239603

https://cloud.tencent.com/developer/article/2212074

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值