Проблемы с загрузкой данных с веб-сайта и чтением данных с помощью набора данных из 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, не читает файл, который я загружаю должным образом.

Какие-либо предложения?

0 ответов

Другие вопросы по тегам