diff options
author | John Zwinck <jzwinck@gmail.com> | 2018-07-07 10:14:46 +0800 |
---|---|---|
committer | John Zwinck <jzwinck@gmail.com> | 2018-07-07 10:16:23 +0800 |
commit | 4c74e384a7ec961d171b7d6a0fbf20b2bc831c28 (patch) | |
tree | 09f4e4b24dd3723e8180dce59a90211fbcc9939e /numpy/lib | |
parent | 8eee9b7d3836b8d080b50e2dfb3ba98537a076c0 (diff) | |
download | numpy-4c74e384a7ec961d171b7d6a0fbf20b2bc831c28.tar.gz |
BUG: fix np.load() of empty .npz file
Fixes #9989
Diffstat (limited to 'numpy/lib')
-rw-r--r-- | numpy/lib/npyio.py | 3 | ||||
-rw-r--r-- | numpy/lib/tests/test_format.py | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/numpy/lib/npyio.py b/numpy/lib/npyio.py index 7788ac319..d8cfbf769 100644 --- a/numpy/lib/npyio.py +++ b/numpy/lib/npyio.py @@ -412,12 +412,13 @@ def load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, try: # Code to distinguish from NumPy binary files and pickles. _ZIP_PREFIX = b'PK\x03\x04' + _ZIP_SUFFIX = b'PK\x05\x06' # empty zip files start with this N = len(format.MAGIC_PREFIX) magic = fid.read(N) # If the file size is less than N, we need to make sure not # to seek past the beginning of the file fid.seek(-min(N, len(magic)), 1) # back-up - if magic.startswith(_ZIP_PREFIX): + if magic.startswith(_ZIP_PREFIX) or magic.startswith(_ZIP_SUFFIX): # zip-file (assume .npz) # Transfer file ownership to NpzFile tmp = own_fid diff --git a/numpy/lib/tests/test_format.py b/numpy/lib/tests/test_format.py index 38a9b8000..f00961fef 100644 --- a/numpy/lib/tests/test_format.py +++ b/numpy/lib/tests/test_format.py @@ -852,3 +852,10 @@ def test_large_archive(): new_a = np.load(f)["arr"] assert_(a.shape == new_a.shape) + + +def test_empty_npz(): + # Test for gh-9989 + fname = os.path.join(tempdir, "nothing.npz") + np.savez(fname) + np.load(fname) |