我在使用python脚本时遇到了麻烦,该脚本以grib2格式从天气模型(GFS)下载最近的天气数据。它曾经工作过,但现在不再工作了(即在GFS服务器上下载最近的文件)。尝试访问数据时,我遇到了分段错误,我甚至不知道从哪里开始。下面是两个示例(工作和不工作)。我运行的是linux薄荷肉桂。我已经安装了python-grib和python3-grib (版本: 1.9.8-1build2,通过软件管理器)。
任何建议都将不胜感激。
Ps:出现分段错误的文件示例如下:http://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs.2015013000/文件名: gfs.t00z.master.grbf003.10m.uv.grib2
旧文件不会保存在那个服务器上,我想。但是可以在这里找到一个示例:http://grib.virtual-loup-de-mer.org/archives/2014/0130/文件名: gfs.t00z.master.grbf03.10m.uv.grib2
Pps:很抱歉花了这么长时间。我已经安装了pygrib 2.0版本,从1.98开始,它现在可以工作了。啊,我花了很长时间来尝试这个(并正确地安装它)。但仅此而已。无论如何,给每个人一个大大的‘谢谢’,以得到所有的答案,莱蒂夏
/usr/bin/python3.4
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.工作脚本:
import pygrib
grbs = pygrib.open('winddata1.grib2')
for grb in grbs:
... grb
...
1:10 metre U wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201411041200
2:10 metre V wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201411041200
grb = grbs.message(1)
wind = grb.data(lat1=20,lat2=70,lon1=220,lon2=320)
quit()/usr/bin/python3.4
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.失败的脚本:
import pygrib
grbs = pygrib.open('winddata2.grib2')
for grb in grbs:
... grb
...
1:10 metre U wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201501220600
2:10 metre V wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201501220600
grb = grbs.message(1)
wind = grb.data(lat1=20,lat2=70,lon1=220,lon2=320)错误:
Segmentation fault编辑(希望这有意义)
运行(以script testing.py的身份)将提供以下信息:
gdb -ex r --args /usr/bin/python3.4 testing.py
GNU gdb (Ubuntu 7.7-0ubuntu3) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/python3.4...(no debugging symbols found)...done.
Starting program: /usr/bin/python3.4 testing.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
1:10 metre U wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201501220600
2:10 metre V wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201501220600
Program received signal SIGSEGV, Segmentation fault.
0x000000000053b684 in PyLong_AsVoidPtr ()
(gdb) bt
#0 0x000000000053b684 in PyLong_AsVoidPtr ()
#1 0x00007ffff5968da7 in ?? () from /usr/lib/python3/dist-packages/numpy/core/multiarray.cpython-34m-x86_64-linux-gnu.so
#2 0x0000000000533cd2 in PyObject_AsReadBuffer ()
#3 0x00007ffff21c9f00 in ?? () from /usr/lib/python3/dist-packages/g2clib.cpython-34m-x86_64-linux-gnu.so
#4 0x000000000057bf33 in PyEval_EvalFrameEx ()
#5 0x000000000057d3d3 in PyEval_EvalCodeEx ()
#6 0x000000000057df80 in ?? ()
#7 0x000000000043810a in PyObject_Call ()
#8 0x00000000004d3745 in ?? ()
#9 0x000000000043810a in PyObject_Call ()
#10 0x00007ffff677669c in ?? () from /usr/lib/python3/dist-packages/pygrib.cpython-34m-x86_64-linux-gnu.so
#11 0x000000000043810a in PyObject_Call ()
#12 0x00007ffff675788a in ?? () from /usr/lib/python3/dist-packages/pygrib.cpython-34m-x86_64-linux-gnu.so
#13 0x00007ffff6762ece in ?? () from /usr/lib/python3/dist-packages/pygrib.cpython-34m-x86_64-linux-gnu.so
#14 0x000000000057bf33 in PyEval_EvalFrameEx ()
#15 0x000000000057d3d3 in PyEval_EvalCodeEx ()
#16 0x000000000060ba83 in PyRun_FileExFlags ()
#17 0x000000000060bc85 in PyRun_SimpleFileExFlags ()
#18 0x000000000060d3ac in Py_Main ()
#19 0x000000000041ec0d in main ()发布于 2015-02-04 23:42:27
您运行的是哪个版本的pygrib库?http://pygrib.googlecode.com/svn/trunk/Changelog的发行说明描述了几种情况,在这些情况下,为了处理导致段错误的问题而进行了新的发布。我会下载最新的版本,看看这个bug是否仍然存在。
https://stackoverflow.com/questions/28100613
复制相似问题