关于wrf驱动数据fnl下载官网上给的下载代码直接输入文件名,如果下载很长时间的需要点击很多文件,而且代码很长,为此我在官网基础上更改了一下代码。
import requests
from datetime import datetime, timedelta
# 定义起始时间和结束时间
start_date_str = "2010-10-07 06:00"
end_date_str = "2011-08-02 00:00"
# 将字符串转换为datetime对象
start_date = datetime.strptime(start_date_str, "%Y-%m-%d %H:%M")
end_date = datetime.strptime(end_date_str, "%Y-%m-%d %H:%M")
# 生成文件列表
files = []
current_date = start_date
while current_date <= end_date:
year = current_date.year
month = current_date.month
day = current_date.day
hour = current_date.hour
file_path = f"grib2/{year}/{year}.{month:02d}/fnl_{year}{month:02d}{day:02d}_{hour:02d}_00.grib2"
files.append(file_path)
# 每次增加6小时
current_date += timedelta(hours=6)
# 下载文件
for file in files:
idx = file.rfind("/")
if idx > 0:
ofile = file[idx + 1:]
else:
ofile = file
try:
response = requests.get(f"https://data.rda.ucar.edu/d083002/{file}")
response.raise_for_status() # 检查请求是否成功
with open(ofile, "wb") as f:
f.write(response.content)
print(f"成功下载文件: {ofile}")
except requests.exceptions.RequestException as e:
print(f"下载文件 {ofile} 时出错: {e}")
运行步骤,更改代码中自己的起始时间,在官网注册账号,将python脚本放到自己下载fnl数据的目录下,python3 脚本名 账号名 密码