@@ -1881,9 +1881,7 @@ def __init__(self, fname, data, convert_dates=None, write_index=True,
1881
1881
if byteorder is None :
1882
1882
byteorder = sys .byteorder
1883
1883
self ._byteorder = _set_endianness (byteorder )
1884
- self ._file = _open_file_binary_write (
1885
- fname , self ._encoding or self ._default_encoding
1886
- )
1884
+ self ._fname = fname
1887
1885
self .type_converters = {253 : np .int32 , 252 : np .int16 , 251 : np .int8 }
1888
1886
1889
1887
def _write (self , to_write ):
@@ -2078,16 +2076,21 @@ def _prepare_pandas(self, data):
2078
2076
self .fmtlist [key ] = self ._convert_dates [key ]
2079
2077
2080
2078
def write_file (self ):
2081
- self ._write_header (time_stamp = self ._time_stamp ,
2082
- data_label = self ._data_label )
2083
- self ._write_descriptors ()
2084
- self ._write_variable_labels ()
2085
- # write 5 zeros for expansion fields
2086
- self ._write (_pad_bytes ("" , 5 ))
2087
- self ._prepare_data ()
2088
- self ._write_data ()
2089
- self ._write_value_labels ()
2090
- self ._file .close ()
2079
+ self ._file = _open_file_binary_write (
2080
+ self ._fname , self ._encoding or self ._default_encoding
2081
+ )
2082
+ try :
2083
+ self ._write_header (time_stamp = self ._time_stamp ,
2084
+ data_label = self ._data_label )
2085
+ self ._write_descriptors ()
2086
+ self ._write_variable_labels ()
2087
+ # write 5 zeros for expansion fields
2088
+ self ._write (_pad_bytes ("" , 5 ))
2089
+ self ._prepare_data ()
2090
+ self ._write_data ()
2091
+ self ._write_value_labels ()
2092
+ finally :
2093
+ self ._file .close ()
2091
2094
2092
2095
def _write_value_labels (self ):
2093
2096
for vl in self ._value_labels :
0 commit comments