Changeset c77630a in flex_extract.git for Source/Python/Classes/GribUtil.py


Ignore:
Timestamp:
Aug 13, 2019, 12:32:22 PM (5 years ago)
Author:
Anne Philipp <anne.philipp@…>
Branches:
master, ctbto, dev
Children:
0690a6c
Parents:
33a4ccc
Message:

BUGFIX: for python3-eccodes the file openings need to be in binary mode! added binary marker in filemode

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Source/Python/Classes/GribUtil.py

    r44174de rc77630a  
    9191                             codes_release)
    9292
    93         fileid = open(self.filenames, 'r')
    94 
    9593        return_list = []
    9694
    97         while 1:
     95        with open(self.filenames, 'rb') as fileid:
     96
    9897            gid = codes_new_from_file(fileid)
    99 
    100             if gid is None:
    101                 break
    10298
    10399            if len(wherekeynames) != len(wherekeyvalues):
     
    123119            codes_release(gid)
    124120
    125         fileid.close()
    126 
    127121        return return_list
    128122
    129123
    130124    def set_keys(self, fromfile, keynames, keyvalues, wherekeynames=[],
    131                  wherekeyvalues=[], strict=False, filemode='w'):
     125                 wherekeyvalues=[], strict=False, filemode='wb'):
    132126        '''Opens the file to read the grib messages and then write
    133127        the selected messages (with wherekeys) to a new output file.
     
    161155
    162156        filemode : :obj:`string`, optional
    163             Sets the mode for the output file. Default is "w".
     157            Sets the mode for the output file. Default is "wb".
    164158
    165159        Return
     
    175169
    176170        fout = open(self.filenames, filemode)
    177         fin = open(fromfile)
    178 
    179         while 1:
     171
     172        with open(fromfile, 'rb') as fin:
    180173            gid = codes_grib_new_from_file(fin)
    181 
    182             if gid is None:
    183                 break
    184174
    185175            select = True
     
    206196            codes_release(gid)
    207197
    208         fin.close()
    209198        fout.close()
    210199
     
    212201
    213202    def copy_dummy_msg(self, filename_in, selectWhere=True,
    214                  keynames=[], keyvalues=[], filemode='w'):
     203                 keynames=[], keyvalues=[], filemode='wb'):
    215204        '''Add the content of another input grib file to the objects file but
    216205        only messages corresponding to keys/values passed to the function.
     
    235224
    236225        filemode : :obj:`string`, optional
    237             Sets the mode for the output file. Default is "w".
     226            Sets the mode for the output file. Default is "wb".
    238227
    239228        Return
     
    247236            raise Exception("Give a value for each keyname!")
    248237
    249         fin = open(filename_in, 'rb')
     238
    250239        fout = open(self.filenames, filemode)
    251240
    252241        fields = 0
    253242
    254         while fields < 1:
     243        with open(filename_in, 'rb') as fin:
     244            if fields >= 1:
     245                fout.close()
     246                return
     247
    255248            gid = codes_grib_new_from_file(fin)
    256 
    257             if gid is None:
    258                 break
    259249
    260250            select = True
     
    278268            codes_release(gid)
    279269
    280         fin.close()
    281270        fout.close()
    282271
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG