无法从网站下载数据并无法从netCDF4使用数据集读取数据

时间:2018-08-02 18:46:38

标签: python-3.x netcdf4

我的代码的目标是从指定的日期开始下载GFS数据(无论是用户输入还是仅获取今天的数据),然后使用netCDF4进行下载和读取。我需要下载数据包,以便在我的代码运行时,运行时间不会超过15分钟,然后由于DOS服务器正在访问大量数据而被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

尽管有更多方法可以解决该错误。它基本上复制并粘贴了我在accessGFS()中创建的整个“ .nc”文件,并将其扔到错误代码中。这些是引用:

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(数据集)中的功能无法读取我正确下载的文件。

有什么建议吗?

0 个答案:

没有答案