1# 2# Copyright 2005-2018 ECMWF. 3# 4# This software is licensed under the terms of the Apache Licence Version 2.0 5# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 6# 7# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by 8# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. 9# 10 11import traceback 12import sys 13 14from gribapi import * 15 16INPUT = '../../data/reduced_latlon_surface.grib1' 17VERBOSE = 1 # verbose error reporting 18 19 20def example(): 21 f = open(INPUT) 22 23 while 1: 24 gid = grib_new_from_file(f) 25 if gid is None: 26 break 27 28 iterid = grib_keys_iterator_new(gid, 'ls') 29 30 # Different types of keys can be skipped 31 # grib_skip_computed(iterid) 32 # grib_skip_coded(iterid) 33 # grib_skip_edition_specific(iterid) 34 # grib_skip_duplicates(iterid) 35 # grib_skip_read_only(iterid) 36 # grib_skip_function(iterid) 37 38 while grib_keys_iterator_next(iterid): 39 keyname = grib_keys_iterator_get_name(iterid) 40 keyval = grib_get_string(iterid, keyname) 41 print "%s = %s" % (keyname, keyval) 42 43 grib_keys_iterator_delete(iterid) 44 grib_release(gid) 45 46 f.close() 47 48 49def main(): 50 try: 51 example() 52 except GribInternalError, err: 53 if VERBOSE: 54 traceback.print_exc(file=sys.stderr) 55 else: 56 print >>sys.stderr, err.msg 57 58 return 1 59 60if __name__ == "__main__": 61 sys.exit(main()) 62