Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/source/whatsnew/v0.25.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,7 @@ I/O
- Bug in :meth:`DataFrame.to_string` and :meth:`DataFrame.to_latex` that would lead to incorrect output when the ``header`` keyword is used (:issue:`16718`)
- Bug in :func:`read_csv` not properly interpreting the UTF8 encoded filenames on Windows on Python 3.6+ (:issue:`15086`)
- Improved performance in :meth:`pandas.read_stata` and :class:`pandas.io.stata.StataReader` when converting columns that have missing values (:issue:`25772`)
- Bug in :func:`read_hdf` not properly closing store after a KeyError is raised (:issue:`25766`)


Plotting
Expand Down
2 changes: 1 addition & 1 deletion pandas/io/pytables.py
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ def read_hdf(path_or_buf, key=None, mode='r', **kwargs):
'contains multiple datasets.')
key = candidate_only_group._v_pathname
return store.select(key, auto_close=auto_close, **kwargs)
except (ValueError, TypeError):
except (ValueError, TypeError, KeyError):
# if there is an error, close the store
try:
store.close()
Expand Down
13 changes: 13 additions & 0 deletions pandas/tests/io/test_pytables.py
Original file line number Diff line number Diff line change
Expand Up @@ -1233,6 +1233,19 @@ def test_append_all_nans(self):
reloaded = read_hdf(path, 'df_with_missing')
tm.assert_frame_equal(df_with_missing, reloaded)

def test_read_missing_key_close_store(self):
# GH 25766
with ensure_clean_path(self.path) as path:
df = pd.DataFrame({'a': range(2), 'b': range(2)})
df.to_hdf(path, 'k1')

with pytest.raises(KeyError):
pd.read_hdf(path, 'k2')

# smoke test to test that file is properly closed after
# read with KeyError before another write
df.to_hdf(path, 'k2')

def test_append_frame_column_oriented(self):

with ensure_clean_store(self.path) as store:
Expand Down