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/gts.bufr'
17VERBOSE = 1  # verbose error reporting
18
19
20def example():
21    f = open(INPUT)
22
23    while 1:
24        bid = gts_new_from_file(f)
25        if bid is None:
26            break
27
28        iterid = grib_keys_iterator_new(bid)
29
30        # Different types of keys can be skipped
31        # grib_skip_computed(iterid)
32        # grib_skip_coded(iterid)
33        # grib_skip_read_only(iterid)
34
35        while grib_keys_iterator_next(iterid):
36            keyname = grib_keys_iterator_get_name(iterid)
37            keyval = grib_get_string(iterid, keyname)
38            print "%s = %s" % (keyname, keyval)
39
40        grib_keys_iterator_delete(iterid)
41        grib_release(bid)
42
43    f.close()
44
45
46def main():
47    try:
48        example()
49    except GribInternalError, err:
50        if VERBOSE:
51            traceback.print_exc(file=sys.stderr)
52        else:
53            print >> sys.stderr, err.msg
54
55        return 1
56
57if __name__ == "__main__":
58    sys.exit(main())
59