Проблемы с загрузкой данных с веб-сайта и чтением данных с помощью набора данных из netCDF4
Цель моего кода - загрузить данные GFS с указанной даты (независимо от того, введен ли пользователь или просто захватывает сегодняшние данные) и загрузить и прочитать их с помощью netCDF4. Мне нужно загрузить пакет данных, чтобы при запуске моего кода он не занимал более 15 минут, а затем был остановлен сервером DOS, поскольку он получает доступ к такому количеству данных. Это то, что я до сих пор:
def accessGFS():
baseURL = 'http://nomads.ncep.noaa.gov:9090/dods/gfs_0p25/'
GFSDate = int(time.strftime("%Y%m%d"))
currentHour = time.gmtime()[3]
gfsTimeHeader = 'gfs_0p25_'
if currentHour > 22:
timeURL = gfsTimeHeader + '18z'
GFSTime = 18
elif currentHour > 16:
timeURL = gfsTimeHeader + '12z'
GFSTime = 12
elif currentHour > 10:
timeURL = gfsTimeHeader + '06z'
GFSTime = 6
elif currentHour > 4:
timeURL = gfsTimeHeader + '00z'
GFSTime = 0
else:
timeURL = gfsTimeHeader + '18z'
GFSTime = 18
GFSDate -= 1
GFSDate = str(GFSDate)
GFSDateTime = datetime.datetime(int(GFSDate[:4]),int(GFSDate[4:6]),int(GFSDate[6:]),GFSTime, 0, 0)
dateURL = 'gfs' + GFSDate + '/'
url = baseURL + dateURL + timeURL
values = {}
data = urllib.parse.urlencode(values)
data = data.encode('utf-8')
req = urllib.request.Request(url, data)
gfs_download = urllib.request.urlopen(req)
gfsData = gfs_download.read()
saveFile = open('GFS%sdata.nc' %GFSDate, 'w')
saveFile.write(str(gfsData))
saveFile.close()
gfs = Dataset(gfsData)
return GFSDateTime, gfs
Который затем вызывается в строке кода:
gfs, gfsDate = GFSReader.accessGFS()
Когда я запускаю код, он обращается к серверу GFS и загружает файл в нужную папку, но выдает ошибку:
FileNotFoundError: [Errno 2] No such file or directory: b'b\'<html>\\n<head>\\n
Хотя есть и другая причина этой ошибки. Он в основном копирует и вставляет весь файл.nc, который я создал в accessGFS(), и добавляет его в код ошибки. Это трекбеки:
File "C:/Users/Desktop/Predictions/GFSDriver.py", line 65 in <module>
gfs, gfsDate = GFSReader.accessGFS()
File "C:\Users\Desktop\Predictions\GFSReader.py", line 53. in accessGFS
gfs = Dataset(gfsData)
File "netCDF4\_netCDF4.pyx", line 2111, in netCDF4._netCDF4.Dataset.__init__
File "netCDF4\_netCDF4.pyx", line 1731, in netCDF4._ensure_nc_success
Так что я знаю, что это как-то связано с тем, как я скачал файл или как он читается через netCDF4, но я не уверен, что это такое. Код работал, вообще не загружая данные, а просто получая набор данных каждый раз, когда он вызывался. Так вот что заставляет меня думать, что по какой-то причине функция в netCDF4, Dataset, не читает файл, который я загружаю должным образом.
Какие-либо предложения?