Skip to content

Commit 89e45f4

Browse files
committed
Revert changes to zip error messages
1 parent 29b7f74 commit 89e45f4

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

pandas/io/common.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -336,12 +336,16 @@ def _get_handle(path_or_buf, mode, encoding=None, compression=None,
336336
elif compression == 'zip':
337337
import zipfile
338338
zip_file = zipfile.ZipFile(path_or_buf)
339-
try:
340-
name, = zip_file.namelist()
341-
except ValueError:
342-
raise ValueError('Zip file must contain exactly one file {}'
339+
zip_names = zip_file.namelist()
340+
if len(zip_names) == 1:
341+
f = zip_file.open(zip_names.pop())
342+
elif len(zip_names) == 0:
343+
raise ValueError('Zero files found in ZIP file {}'
343344
.format(path_or_buf))
344-
f = zip_file.open(name)
345+
else:
346+
raise ValueError('Multiple files found in ZIP file.'
347+
' Only one file per ZIP: {}'
348+
.format(zip_names))
345349

346350
# XZ Compression
347351
elif compression == 'xz':

pandas/io/tests/parser/compression.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,17 @@ def test_zip(self):
4545
tmp.writestr(file_name, data)
4646
tmp.close()
4747

48-
self.assertRaisesRegexp(ValueError, 'must contain exactly one file',
48+
self.assertRaisesRegexp(ValueError, 'Multiple files',
4949
self.read_csv, path, compression='zip')
5050

51-
self.assertRaisesRegexp(ValueError, 'must contain exactly one file',
51+
self.assertRaisesRegexp(ValueError, 'Multiple files',
5252
self.read_csv, path, compression='infer')
5353

5454
with tm.ensure_clean() as path:
5555
tmp = zipfile.ZipFile(path, mode='w')
5656
tmp.close()
5757

58-
self.assertRaisesRegexp(ValueError, 'must contain exactly one file',
58+
self.assertRaisesRegexp(ValueError, 'Zero files',
5959
self.read_csv, path, compression='zip')
6060

6161
with tm.ensure_clean() as path:

0 commit comments

Comments
 (0)